加载大量文件时出现问题

时间:2016-04-27 17:51:15

标签: matlab

我正在使用CUDA / C ++来解决非线性方程组,我正在将结果写入mat文件。之后,我将数据加载到Matlab中,使用quiverimagesc显示,然后使用writeVideo(video,getframe(gcf));制作视频。以下是我如何做的草图:

for i=1:numberoffiles
    load(strcat(data1,num2str('i')));
    load(strcat(data2,num2str('i')));
    load(strcat(data3,num2str('i')));
    load(strcat(data4,num2str('i')));
    load(strcat(data5,num2str('i')));
    subplot(...);
    quiver(...);
    imagesc(...);
    drawnow
    writeVideo(video,getframe(gcf));
end

当我的numberoffiles100时,它工作正常,尽管这个过程越来越慢。现在我的numberoffiles=1000i>400之后变得非常慢。我想,我忘了清楚一些事情。但事实是,我的所有.mat文件都包含一个名为iu1的数组,因此每个加载都会覆盖数组iu1。任何人都知道如何解决它?我觉得这个问题出在RAM中,因为在这个过程中,一切都开始在我的电脑上运行得很慢。

这是我的完整代码:

 function []=MakeVideo(framerate,name)
      video=VideoWriter(name);
      video.FrameRate=framerate;
      open(video);
      f=figure('units','normalized','outerposition',[0 0 1 1])
      [names, values]=textread('config.txt','%s%f');
      stride=values(17);
      dt=values(16);
      resize=values(19)/32;
      max=values(15)/dt;
      dx=values(18)/values(19);
      for i=0:stride:max
          uitable(f,'Data',values,'ColumnWidth',{100},'ColumnName',          {'Values'},'RowName',names,'Position',[1150 500 350 800]);
          load(strcat('nx',num2str(i)));
          nxcu=iu1';
          clear('iu1');
          load(strcat('ny',num2str(i)));
          nycu=iu1';
          clear('iu1');
          ncu=nxcu+1i.*nycu;
          load(strcat('Psi',num2str(i)));
          Psicu=iu1';
          clear('iu1');
          load(strcat('phi',num2str(i)));
          phicu=iu1';
          clear('iu1');
          load(strcat('c',num2str(i)));
          ccu=iu1';
          clear('iu1');
          subplot(2,2,1)
          ncu=imresize(ncu,1/resize);
          npplot=angle(ncu)/2;
              imagesc(abs(ncu));
              colorbar
              hold on
              q=quiver(cos(npplot),sin(npplot));
              set(q,'color','black');
              set(q,'LineWidth',2);
              set(q,'ShowArrowHead','off');
              daspect([1 1 1])
              title('n')
              subplot(2,2,2)
              imagesc(phicu)
              daspect([1 1 1])
              colorbar
              title(strcat('w, wmin=',num2str(min(min(phicu)))))
              subplot(2,2,3) 
              Psix=imresize(Deriv(Psicu,'y',dx),1/resize);
              Psiy=imresize(-Deriv(Psicu,'x',dx),1/resize);
             q=quiver(Psix,Psiy);
              set(q,'color','black');
              set(q,'LineWidth',2);
              daspect([1 1 1])
              title('Psi')
              subplot(2,2,4)
              imagesc(ccu)
              daspect([1 1 1])
              colorbar
                        title(strcat('time=',num2str(dt*i),'mic=',num2str(min(min(ccu)))))
              drawnow
              writeVideo(video,getframe(gcf));
      end
      close gcf
      close(video)
  end

在工作文件夹中,我有以下文件列表:

nx0.mat, ny0.mat, c0.mat, Psi0.mat, phi0.mat,
nx1000.mat, ny1000.mat, c1000.mat, Psi1000.mat, phi1000.mat,
nx2000.mat, ny2000.mat, c2000.mat, Psi2000.mat, phi2000.mat,
.............................................
nx500000.mat, ny500000.mat, c500000.mat, Psi500000.mat, phi500000.mat

每个mat文件都有变量iu1。该变量是矩阵512x512。

0 个答案:

没有答案