5

大量の図を .png ファイルとして印刷しています。各図は、データ マトリックスの列のプロットです。.png ファイルを取得して、それらをつなぎ合わせてアニメーションにします。

私の問題は、最初の数百の画像がすばやく印刷されることですが、最初の数百の .png ファイルの約 0.2 秒から 800 番目の図では 2 秒以上まで、新しい図を作成する時間が急速に増加することです。

スクリプトの実行中にメモリ使用量が増加しますが、数秒ごとに 1MB しか増加しません。これは、R2009b 64 ビットを実行している Windows 上にあります。

私のコードは次のようになります。

n = 1000;
matrix = rand(n);

f = figure('Visible','off');    % create the figure

for i_ =1:n
    plot(1:n,matrix(:,i_));
    ylim([0 1]);
    set(f,'PaperUnits','inches','PaperPosition',[0 0 6 4]);
    png_name = [ 'img/timestep_' sprintf('%05d',i_) ];
    print('-dpng', png_name);
end
4

2 に答える 2

4

プロットを再生成するのではなく、反復ごとに プロパティXDataとプロパティのみを変更します。YData

set(f,'PaperUnits','inches','PaperPosition',[0 0 6 4]);
h = plot(1, matrix(:,1));
ylim([0 1]);

for i_ = 1:n
    set(h, 'XData', 1:n, 'YData', matrix(:,i_))
    png_name = sprintf('img/timestep_%05d',i_);
    print('-dpng', png_name);
end

別の提案。アニメーションを作成する場合、なぜ png ファイルを生成するのですか? GETFRAMEを使用して、MATLAB で直接MOVIEを作成します。

于 2012-04-05T16:57:51.427 に答える