为什么在绘制大量子图时MATLAB会变慢?

时间:2017-06-29 08:41:42

标签: matlab plot subplot

我从电极网格上的记录中加载了大量数据,并希望绘制每个电极上的迹线,其中包含多个子图,每个电极一个。

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左右,但在此之后开始减速并继续减速。如何加快绘图过程?

1 个答案:

答案 0 :(得分: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子图的实际用途,因为单个图太小而看不到任何东西。