MATLAB中绘制for循环的最佳方法
我在Matlab中有以下代码: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。“中断”声明有效吗
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崩溃。有时有效,但有时无效