2017-06-29 130 views
0

我已經在大量的數據從裝載的記錄上的電極網格和要繪製在具有多個副區,一個用於每個電極的圖從每個電極的痕跡。爲什麼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,使用太多,電腦速度變慢。另外,您確定顯示數據的最佳方式是30x30子圖網格嗎?你真的能看到小於20000x20000的顯示內容嗎? –

+2

*如果*您需要所有這些地塊(我真誠地相信,因爲@AnderBiguri說你看不到任何東西反正),它很可能是更好的每一道保存爲'「知名度」獨立的情節,「關'',然後'直接'將它保存到磁盤。然後,您可以在文件瀏覽器中檢查您的情節,如有必要。 – Adriaan

+0

我不確定這是記憶。我試圖運行下面的腳本,只使用1GB的內存。我也看到它從5毫秒/小區開始,以0.1秒/小區結束。對於ct = 1:900,tic;子圖(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 

在我的電腦上,這使得20x20的數字從10秒降低到6秒。

哦,我完全與上述意見一致。我看不出30x30小區的實際用途,因爲單個小區太小而看不到任何東西。