我有一个函数E
,它有一个for循环,在这个循环中,我打开一个图像,使用imshow(im,'Colormap',jet)
绘制,然后调用另一个函数M
,在fn M
中,还有另一个循环,我使用line
matlab函数在图像im
上绘制点。问题是,如果我在没有从fn E
调用的情况下运行fn M
"这意味着E
函数只有一次迭代,这个图会实时快速地出现。但如果我从fn E
调用它,图像在我退出之前不会显示,因为循环有大量迭代,其中只绘制了图像的一部分。我不知道如何使图像实时显示每次迭代的更新?所以如果有人可以建议的话这两个函数的ode非常大,这就是为什么我不能发布它。
这是我的代码示例:
%function E
function E
for..
M(D)
end
%function M
function M(D)
imshow(D,'Colormap',jet)
for..
for..
line([i],[j],'Marker','p','color','g','linewidth',1,'MarkerSize',7)
end
end
不要使用pause
,使用drawnow
,它会显式刷新图形队列。如果您愿意,您可以使用drawnow('expose')
,它可能更快,但像在快速循环中调整窗口大小之类的东西可能不起作用。
您可以使用在for循环中暂停的少量时间来提供渲染时间。例如在调用函数M
之后在循环中使用pause(.1)。