在MATLAB

时间:2017-05-26 13:39:37

标签: matlab loops

我在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.一个“中断”声明是否有效?或者使用“键盘”进行键盘输入?

感谢您的帮助

2 个答案:

答案 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)。