使用matlab处理比较大的数据时候,我们会遇到out of memory 的情况,这种情况下就需要我们优化代码,来节省内存。我在处理一个超大矩阵的傅里叶变换过程中,测试了不同的代码及内存使用情况,这里和大家分享一下。
需要傅里叶变换的矩阵A[1,250200,64]
初始变量定义:
bMax=1;
NMax=250200;
SampleMax=64;
s=1;
第一中,使用for循环来读取数据,使用for 循环来进行FFT变换,
v=zeros(bMax,NMax,SampleMax);
dt = timestep*dumpstep;%time between the dump frame
fid1=fopen(['Velocity1.txt'],'r');%%读入数据
tic
for b=1:bMax;
for f=1:SampleMax;
data_v=textscan(fid1,'%f',NMax);
save (['data_v',num2str(s),'.mat'],'data_v');
v(b,1:NMax,f)=data_v{1};
end;
toc
end;
fclose(fid1);
tic
for j=1:1:NMax;
m(bMax,1,1:SampleMax)=fft(v(bMax,j,:),[],3)*dt;
v(bMax,j