如何在Matlab中编写一个double?
我正在一个循环中生成3500x7500大小的双矩阵,我想将其导出为tif文件 守则的一部分如何在Matlab中编写一个double?,matlab,matrix,Matlab,Matrix,我正在一个循环中生成3500x7500大小的双矩阵,我想将其导出为tif文件 守则的一部分 for k = 1:length(basinlist{1}) #some operation that produces GRID imwrite(GRID,filename); end 但是,当我这样做时,生成的TIF文件只包含255个,并且输出为uint8。我在文档中读到了它,但我无法修复它。我只想保留原始值,不进行缩放或任何操作 如果这有帮助: >> max(max(G
for k = 1:length(basinlist{1})
#some operation that produces GRID
imwrite(GRID,filename);
end
但是,当我这样做时,生成的TIF文件只包含255个,并且输出为uint8。我在文档中读到了它,但我无法修复它。我只想保留原始值,不进行缩放或任何操作
如果这有帮助:
>> max(max(GRID))
ans =
1.5646e+04
>> min(min(GRID))
ans =
1.1119e+03
假设我们想要创建这样的图像颜色深度,将适合给定的数据 默认情况下,导出为图像格式的数据将转换为
uint8
(数据范围0-2^8-1)
但是Matlab(2011b)可以使用更多的uintX
格式,其中X
表示每个值X位
范围为0-255(2^8)uint8
跨度为0-65 535(2^16)uint16
带跨度0-4.29 e 9(2^32)uint32
跨度为0-1.84 e 19(2^64)uint64
for k = 1:length(basinlist{1})
#some operation that produces GRID
%% Convert GRID to roughest acceptable uint format
GRID=uint16(GRID);
%% Export
imwrite(GRID,filename);
end
这将浮点数转换为整数。如何保留浮动?但是如果导入由
geotifwrite
导出的文件,它也将是uint8
类。所以你无论如何都会输的。。。如果你想保持浮动,你必须使用不同的文件格式。imwrite
和geotifwrite
检查输入格式,如果不是uintX
则将其转换为uint8
格式。