在MATLAB中写一个双矩阵

时间:2016-05-30 07:08:44

标签: matlab matrix

我如何imwrite这个值[12 13.5; 15 107.75]而不更改imread

我想保存我的信息。但是,当我uint8这个矩阵时我imread这个值,我有[12 13; 15 108]

2 个答案:

答案 0 :(得分:2)

(让[12 13.5;15 107.75]成为A。)

来自imwrite文档:

  

imwrite(A,filename)将图像数据A写入filename指定的文件。   如果A的数据类型为uint16且输出文件格式支持16位数据(JPEG,PNG和TIFF),则imwrite输出16位值。

因此,您可以将A乘以100,然后将其转换为uint16。你会得到[1200 1350;1500 10775]。将其写入(JPEG, PNG, or TIFF),例如imwrite(A,'image.jpeg')

现在imread('image.jpeg')将返回16-bit个整数。将它们转换为double,然后除以100以获取原始数据。 (例如out = double(imread('image.jpeg'))/100

注意: 16位代表的最高值为65536。因此,这意味着您在扩展后输入的数字必须小于65536,否则您将丢失信息。如果您使用的是双精度less that 255 with precision 2 or less(小数点后两位),那么放大后的最高值将是25599,小于65536所以它很好。如果您的输入值具有不同的范围或精度,请注意。

尽管如此,我认为您应该按照T. Huang的建议使用fprintf将数据写入文件中。

答案 1 :(得分:1)

imwrite无法做到这一点。你可以试试fprintf。 http://cn.mathworks.com/help/matlab/ref/fprintf.html