我正在尝试使用Matlab读取二进制数据,但是当我编写代码时,我所拥有的数据不对。
写入二进制文件:
ofstream outfile2 (outfilename2.c_str() , ofstream::binary);
...
vector<complex<double> > Cxy(2560);
... // data collected from the device.
for(unsigned j = 0; j < 2560; j++)
{
outfile2.write((const char*)&Cxy[j], sizeof(Cxy[j]));
outfile2.flush();
}
当我使用:
读取数据时double fft_len = 256*10;
std::vector<std::complex<double> > vtr(fft_len);
vtr.resize(fft_len);
{
std::ifstream input("data.bin", std::ifstream::binary);
for (int i=0; i< fft_len; ++i)
input.read((char *)&vtr[i],sizeof(vtr[i]));
}
for (size_t i=0; i<vtr.size(); ++i)
std::cout << vtr[i] << endl; // data look like: //(1.31649816e+07,3.97112323e+06)
我用过copy&amp;将数据粘贴到matlab中,然后将其绘制出来。
我还想尝试使用Matlab直接读取数据的不同方法: filename =&#39; data.bin&#39;;
fid = fopen(filename);
fseek(fid,4*2560,'bof');
y = fread(fid,[2,inf],'long');
x = complex(y(1,:),y(2,:));
plot(abs(x));
figure, plot(abs(x));
但x的长度仅为104而不是我预期的2560。
所以任何人都可以提供帮助吗?
非常感谢你。