2

我写了一个 matlab 函数,它在一个图形上做了很多事情。

现在,问题是在程序终止执行之前不会显示图形,但我希望在程序运行时实时显示图形,并进行所有修改,并且始终在前台显示。

我怎么能做到这一点?figure('visible','on')不排序任何效果,也不 set() 命令。

代码片段:

set(gcf,'visible','on')
parfor (i=1:n, 8)

    if norm(A(i,:))<1
        countr=countr+1;
    end
    hold on;
    plot(A(i,1),A(i,2),'+')

end

谢谢。

4

3 回答 3

1

我不推荐它,但我认为你需要添加一些drawnow语句,它会同步视觉和计算线程。

于 2013-04-16T11:37:13.887 回答
0

该语句figure('visible','on')创建一个图形,但您想让已经存在的图形可见,因此使用:

set(gcf,'visible','on')

编辑 2

我无法重现该问题(可能该示例不是一个好示例):

A = rand(100,2);
set(gcf,'visible','on')
hold on
parfor (i=1:100, 8)
        plot(A(i,1),A(i,2),'+')
        pause(0.01)
end

旧编辑Parfor 和图形(来源“如何在 parfor 期间查看绘图”):

根据消息来源,快速的答案是您无法在其中更新屏幕输出,parfor但是drawnow这违背了 parfor 的目的。因此,您是否严格需要 parfor?

但是,请参阅我的EDIT 2

于 2013-04-16T11:44:05.913 回答
0

默认情况下,图形必须是可见的;否则你应该修改这个属性。因此,尝试查找任何包含wait. 其他选择是尝试figure(gcf)将焦点放在您想要的图形上。

于 2013-04-16T11:37:11.703 回答