函数中的图未在运行时Matlab上更新



我有一个函数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)。

最新更新