Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中编写一个double?_Matlab_Matrix - Fatal编程技术网

如何在Matlab中编写一个double?

如何在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

我正在一个循环中生成3500x7500大小的双矩阵,我想将其导出为tif文件

守则的一部分

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位

  • uint8
    范围为0-255(2^8)
  • uint16
    跨度为0-65 535(2^16)
  • uint32
    带跨度0-4.29 e 9(2^32)
  • uint64
    跨度为0-1.84 e 19(2^64)
导出数据而不丢失的代码:

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
格式。