【问题标题】:How to use the fwrite and fread in Matlab?如何在 Matlab 中使用 fwrite 和 fread?
【发布时间】:2016-05-05 11:26:53
【问题描述】:

我有问题,

我在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类型的。

【问题讨论】:

  • 如果您得到正确答案,请为好的答案投票并将最有帮助的标记为已回答(在答案投票下方打勾)。

标签: matlab


【解决方案1】:

如果您在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');

【讨论】:

  • 来自文档的其他信息:“A 中的数据是双精度类,除非您在精度参数中指定不同的类。”
  • 谢谢大佬,非常感谢,我在fwrite中也使用'int16=>int16'?谢谢你 。欣赏。
【解决方案2】:

您应该使用 'int16=>int16' 或 '*int16',因为默认输出是双精度。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    相关资源
    最近更新 更多