2017-06-29 11 views
0

私は、電極グリッド上の記録から多くのデータを読み込んで、各電極ごとに1つずつ、複数のサブプロットを含むFigure上の各電極からのトレースをプロットします。多数のサブプロットをプロットするときにMATLABが遅くなるのはなぜですか?

for traces = 1:rows*columns; 
    subplot(rows,columns,traces); 
    baseline = mean(EX_output(1:baseline_time,traces)); 
    plot(EX_output(1:timepoints,traces)); 
     axis([000 timepoints baseline-60 baseline+60]) 
     axis off 

    disp(traces); %print out trace completed 
end 

900個のトレース(30x30)があります。これは動作して数字を出しますが、時間がかかります(2〜3時間)。

トレースが終了すると、番号を印刷します。それは約300まで速く見えますが、それ以降は減速し始め、減速し続けます。プロットプロセスをどのようにスピードアップできますか?

+2

コンピュータにはRAMが必要ですが、あまりにも多くのRAMを使用するとコンピュータの速度が低下します。また、データを表示する最善の方法は30x30サブプロットグリッドですか? 20000x20000より小さいディスプレイで実際に何かを見ることができますか? –

+2

*すべてのプロットが必要な場合(@AnderBiguriは何も見えないと言っていたので、誠に疑問に思っています)、それぞれのトレースを別々のプロットとして「visibility」、「off ''を実行し、それをディスクに直接保存します。必要に応じて、ファイルブラウザでプロットを確認することができます。 – Adriaan

+0

私はそれが記憶であるかどうかはわかりません。私は以下のスクリプトを実行しようとし、1GBのメモリしか使いませんでした。私はまた、5ミリ秒/プロットから始まり、0.1秒/プロットで終わることを見る。 'ct = 1:900、tic; subplot(30,30、ct); fprintf( '%。3fsec、%.0f \ n'、toc、ct); end' – Gelliant

答えて

2

edit subplotと入力して378行目を見ると、サブプロットすると図のすべての兄弟を確認できます。これは、すでに持っているサブプロットが多いほど、チェックする必要があることを意味します。私はこれが遅くなる理由だと思います。あなたがそれを呼び出して、親の図形を明示的に宣言すると、サブプロットを新しいものとして宣言することによってそれを少し速くすることができます。

f=figure(1);clf 
f.NextPlot='new'; 
cols=20;rows=20; 
tic 
for idx = 1:(cols*rows) 
    subplot(rows,cols,idx,'Parent',f); 
    %subplot(rows,cols,idx); 
end 
toc 

私のPCでは、これは20x20の数字を10秒から6秒に下げる時間をもたらします。

私は上記のコメントに完全に同意します。個々のプロットが小さすぎて何かを見ることができないため、30x30のサブプロットに対しては実際的な使用は見ません。

関連する問題