本人新手,编程中遇到的小问题,在此记录,权作自己的学习笔记吧.
背景描述:
linux,C++
编写物理模型时,遇到complex的数据,用C++保存为binary文件。debug时需要MATLAB读该二进制文件并输出图形进行验证。
数据类型:
complex<float>
C++保存代码:
FILE* pFile = fopen(filename, "wb");
fwrite(data, sizeof(complex<float>), num_save, pFile);
fclose(pFile);
数据是按照实部1,虚部1,实部2,虚部2......的方式顺序存放。sizeof(complex<float>) = 2*sizeof(float)
MATLAB读取代码:
fip=fopen(filename,'rb');
[SIN,num]=fread(fip,load_num*2,'float');fclose(fip);
for i = 1:num/2
rawdata(i) = SIN(i*2 - 1) + 1i*SIN(i*2);
end
num返回实际读取数据个数,可能小于load_num.
这篇博客记录了作者在Linux环境下使用C++保存complex<float>数据到二进制文件,并在MATLAB中正确读取和绘制图形的过程。C++通过fwrite将复数按实部-虚部的顺序写入,MATLAB利用fread读取浮点数后,通过循环构造复数。
2736

被折叠的 条评论
为什么被折叠?



