MATLAB中绘制for循环的最佳方法

MATLAB中绘制for循环的最佳方法,matlab,loops,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。“中断”声明有效吗

我在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。“中断”声明有效吗?或者用“键盘”进行键盘输入


感谢您的帮助

您希望用户能够在自己喜欢的时候结束动画吗?或者,由于在每次迭代中验证的条件,是否希望以编程方式结束动画

如果您只想在代码中结束循环(即,上面的第二个选项),那么是的,
break
语句就足够了。(您可以在
中断
之前设置一个布尔标志,并在循环结束后检查该标志,以便在需要时
关闭
绘图。)


现在,如果您想让用户通过单击按钮或其他东西来停止动画,您可以(1)告诉用户按Ctrl+C;或者(2)找到在matlab中制作动画的更结构化的解决方案(您可能需要检查)。

您可以检查每个循环上是否存在图形句柄。如果地物已关闭(因此地物句柄已删除),则自动结束循环

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

CTRL+不是一个好选项。如果绘图循环很大(即有很多函数),很可能会a)破坏一些基于java的函数并继续循环b)创建java异常并使整个MATLAB崩溃。有时有效,但有时无效