1

我有一些相当简单的代码,它读取一些信号数据,抽取它,并将每次迭代附加到一个单元格。数据文件的大小通常为 20 - 100 GB,因此我无法将整个内容读入内存。

我的给定采样率的代码示例sR

fid = fopen(filename,'r');

for jj=1:10
    data = fread(fid,120*sR,'float32');
    wave = complex(data(1:2:end),data(2:2:end)); %Data is in I/Q format

    for k=1:10
        waveDec = decimate(wave,2,100,'fir');
    end
    output{jj} = waveDec;
end

所以这段代码将读入 10 个 120/2 秒的数据块。理想情况下,我想阅读整个文件,因为减少 2^10 非常激进。只是需要这么长的时间。

我想知道将我的wave变量转换为复数是否是一项非常繁重的操作。

读取大块数据与读取小块数据有什么优势吗?我可以以某种方式潜在地并行化这段代码吗?

谢谢

4

0 回答 0