如何在Matlab中将数据保存到32位二进制文件中?

3

我需要用diehard测试由MATLAB程序生成的“随机数”。Diehard只接受32位二进制文件(单精度),但如果我将数据保存在MATLAB中,它会以双精度保存为二进制文件(因此为2*64 = 128位二进制文件)。如何在64位系统上使用MATLAB创建一个32位二进制文件?

2个回答

6
如果您想以特定格式读取/写入二进制文件,应使用 FREAD/FWRITE 函数。例如,以下代码将以32位浮点数的形式向文件中写入100个随机值:
A = rand(1,100);
fid = fopen('temp.dat','wb');
fwrite(fid,A,'float32');
fclose(fid);

如果您需要更多关于MATLAB中文件IO的信息,您也可以查看这些相关的SO帖子:这里这里


3
< p >除了gnovice的解决方案外,您可能希望将随机数生成为“单个”格式,如下所示:

rand(1, 100, 'single')

1
如果你正在处理非常大的矩阵,这一点很值得记住,因为它将占用比RAND默认的双精度更少的空间。然而,你仍然必须指定FWRITE使用的精度。如果没有指定,FWRITE将默认使用'uint8'精度(由于某种原因,它不会选择你传递给它的变量的精度)。 - gnovice

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接