如何在Matlab中使用fwrite和fread?

时间:2016-05-05 11:26:53

标签: matlab

我有一个问题,

我在matlab中保存一个文件,yuv格式int16位如下:

nome_yuv = ( 'matriz.yuv');
% Filename = 'Imagem_Cube_Imaginario.yuv';
fid = fopen (nome_yuv, 'w');
elements = fwrite (fid, matriz16, 'int16');
fclose (fid);

数组的类型为int16。

要读取我使用的相同矩阵;

fileID = fopen ('matriz.yuv');
x = fread (fileID, 'int16');

所以我的x不应该是int16类型的?

x的类型为double。

2 个答案:

答案 0 :(得分:4)

如果在fread中指定了两个选项,则第二个选项被解释为要读取的数组的大小。

请参阅:https://de.mathworks.com/help/matlab/ref/fread.html

中的定义
A = fread(fileID,sizeA)
A = fread(fileID,sizeA,precision)

这意味着,您必须指定所有三个参数,Infsize的默认值。所以请使用:

x = fread (fileID, Inf, 'int16=>int16');

答案 1 :(得分:1)

你应该使用' int16 => int16'或' * int16',默认输出为double。

http://www.mathworks.com/help/matlab/ref/fread.html#btp1twt-3