我写了一个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
感谢。
答案 0 :(得分:1)
我不推荐它,但我认为你需要添加一些drawnow
语句,它将同步视觉和计算线程。
答案 1 :(得分:0)
默认情况下,图形必须可见;否则你应该修改这个属性。因此,请尝试查找包含wait
的任何代码。
其他选择是尝试figure(gcf)
将焦点转移到您想要的数字上。
答案 2 :(得分: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
OLD EDIT Parfor和图片(来源“How to see plots during parfor”):
根据消息来源,快速回答是您无法更新parfor
内的屏幕输出,但drawnow
违反了parfor的目的。因此,你是否真的需要parfor?
但是,请参阅 EDIT 2 。