【问题标题】:How to save data in a 32 bit binary file in matlab?如何在matlab中将数据保存在32位二进制文​​件中?
【发布时间】:2010-10-31 02:30:36
【问题描述】:

我必须用顽固分子测试一些由 MATLAB 中的程序生成的“随机数”。 Diehard 只接受 32 位二进制文​​件(单精度),但如果我将数据保存在 MATLAB 中,它会保存在双精度二进制文件中(因此 2*64 = 128 位二进制文​​件)。如何在 MATLAB 中创建 32 位二进制文​​件,在 64 位系统上工作?

【问题讨论】:

    标签: file matlab file-io binary 32-bit


    【解决方案1】:

    如果你想读/写数据到一个特定格式的二进制文件,你应该使用函数FREAD/FWRITE。例如,这会将 100 个随机值作为 32 位浮点数写入文件:

    A = rand(1,100);
    fid = fopen('temp.dat','wb');
    fwrite(fid,A,'float32');
    fclose(fid);
    

    有关 MATLAB 中文件 IO 的更多信息,您还可以查看这些其他相关的 SO 帖子:herehere

    【讨论】:

      【解决方案2】:

      对于 gnovice 的解决方案,您可能希望将随机数生成为“单个”,如下所示:

      rand(1, 100, 'single')
      

      【讨论】:

      • 如果您正在处理非常大的矩阵,请记住这一点,因为它占用的空间比 RAND 使用的默认双精度要少。但是,您仍然必须指定 FWRITE 使用的精度。如果未指定,FWRITE 将默认为 'uint8' 精度(出于某种原因,它不只是选择您传递的变量的精度)。
      猜你喜欢
      • 1970-01-01
      • 2021-08-01
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多