在MATLAB中读取二进制数据

时间:2016-11-25 16:22:10

标签: c++ matlab

我正在尝试使用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。

所以任何人都可以提供帮助吗?

非常感谢你。

0 个答案:

没有答案