2016-04-07 46 views
0

我在一個循環中生成3500x7500大小的雙矩陣,我想將其導出爲tif文件。如何在Matlab中寫入double?

代碼

for k = 1:length(basinlist{1}) 
    #some operation that produces GRID 
    imwrite(GRID,filename); 
end 

但是,我做到這一點時,所產生的TIF文件只包含255和輸出是在UINT8的A部分。我在文檔中閱讀了它,但我無法修復它。我想要的只是保留原始值而不用縮放或任何東西。

如果這有助於:

>> max(max(GRID)) 

ans = 

    1.5646e+04 

>> min(min(GRID)) 

ans = 

    1.1119e+03 

回答

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ë9(2^32)
  • uint64與跨度0-1.84ë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 
+0

這將浮點數轉換爲整數。我怎樣才能保存花車? – maximusdooku

+0

我認爲你不能因爲tif是圖像格式。 – Crowley

+0

謝謝.........我用geotiffwrite使它工作。 – maximusdooku