如何在Matlab中覆盖双精度?

时间:2016-04-07 15:56:25

标签: matlab matrix

我在循环中生成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

1 个答案:

答案 0 :(得分:1)

假设我们想要创建具有适合给定数据的颜色深度的图像。

导出为图像格式的数据默认转换为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