MATLAB - 仅在绘制所有内容时显示图形

时间:2013-03-30 18:35:16

标签: matlab plot

我正在尝试绘制一个二维有限元解决方案,我正在绘制三角形的三角形:

for i=1:K
    figure(1)
    fill3(x,y,z,c)
    hold on
end

这个问题是,当我运行代码时,它实际上是实时绘制所有代码,因此我可以看到每个三角形都被绘制出来。我希望它能让完成的数字一旦完成就会弹出。

我的朋友已编码相同的东西,除了她根本没有这个问题,我们找不到代码中的任何差异。我的电脑非常快,所以这不是滞后问题。我想也许在MATLAB中有一个我缺少的设置?

编辑:我发现了问题。显然,将'figure(1)'放在循环中会产生巨大的差异。我用'tic'和'toc'计时它在循环中用'figure(1)'标签花了54秒,在循环之前移动了2秒。去图......

1 个答案:

答案 0 :(得分:4)

当你开始图时,将visible属性设置为'off';完成绘图后,将可见性设置为'on'

h = figure('visible','off');
hold on;
for i=1:K    
    fill3(x,y,z,c);
end
hold off;
set(h,'visible','on');

另外,我不完全确定事件队列在MATLAB中是如何工作的,但我很确定你有一台快速计算机正在影响这一点。您可以使用for {循环中朋友较慢的comp上的drawnow来模拟计算机上发生的情况。