我在Matlab中有以下代码:
a = linspace(0,1);
t = linspace(0,10);
x = cos(2*t);
for i = 1:10
z = a(i) *x
plot(z)
pause(0.1)
end
这只是为了看变量“a”的变化将如何改变情节。这创造了一个动画情节。问题是:如果我有一个大型数据集并且我必须绘制比上面更复杂的东西,那么结束循环的最佳方法是什么?换句话说,如果我现在关闭情节图,它将继续运行,直到i = 10.一个“中断”声明是否有效?或者使用“键盘”进行键盘输入?
感谢您的帮助
答案 0 :(得分:3)
您可以检查每个循环上是否存在数字句柄。如果图形关闭(因此删除了图形句柄),则自动结束循环。
a = linspace(0,1);
t = linspace(0,10);
x = cos(2*t);
h.fig = figure;
for i = 1:100
z = a(i) *x
plot(z)
pause(0.1)
if ~isvalid(h.fig)
break
end
end
答案 1 :(得分:1)
您希望用户能够在他们感觉到时结束动画吗?或者您是否希望以编程方式结束动画,因为在每次迭代中都会验证该条件?
如果你只想从代码中结束循环(即上面的第二个选项),那么是的,break
语句就足够了。 (你可以在break
之前设置一个布尔标志,并在循环结束后检查这个标志,这样你就可以close
绘图。)
现在,如果你想让用户通过点击按钮或其他东西来停止动画,你可以(1)告诉用户按Ctrl + C;或(2)找到一个更加结构化的解决方案,在matlab中制作动画(你可能想检查this)。