我有一个问题,
我在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。
答案 0 :(得分:4)
如果在fread
中指定了两个选项,则第二个选项被解释为要读取的数组的大小。
请参阅:https://de.mathworks.com/help/matlab/ref/fread.html
中的定义A = fread(fileID,sizeA) A = fread(fileID,sizeA,precision)
这意味着,您必须指定所有三个参数,Inf
是size
的默认值。所以请使用:
x = fread (fileID, Inf, 'int16=>int16');
答案 1 :(得分:1)
你应该使用' int16 => int16'或' * int16',默认输出为double。
http://www.mathworks.com/help/matlab/ref/fread.html#btp1twt-3