Matlab:更新循环中的最大计数不会';行不通
我已经在MATLAB中执行了这个简单的循环脚本Matlab:更新循环中的最大计数不会';行不通,matlab,loops,Matlab,Loops,我已经在MATLAB中执行了这个简单的循环脚本 clc;clear; close all; m = 100; for i = 1:m if(i == 2) m = 1000; end end 发现“i”只循环到“100”,而不是“1000”。为什么…i=1:m的语句将数组1:m分配给运算符在循环期间将采用的值列表。当循环开始执行时会发生这种情况(注意:您可以使用任何数组,它将逐列执行;对于letter='abcde';fprintf('%s\n',letter
clc;clear; close all;
m = 100;
for i = 1:m
if(i == 2)
m = 1000;
end
end
发现“i”只循环到“100”,而不是“1000”。为什么…i=1:m的语句
将数组1:m
分配给运算符在循环期间将采用的值列表。当循环开始执行时会发生这种情况(注意:您可以使用任何数组,它将逐列执行;对于letter='abcde';fprintf('%s\n',letter);end
工作正常)
如果要调整循环的迭代频率,建议使用while
循环:
ct = 1;
maxIterations = 100;
success = false;
while ~success
fprintf('iteration %i/%i\n',ct,maxIterations);
ct = ct + 1;
if ct == 2
maxIterations == 1000;
end
if ct > maxIterations
success = true;
end
end
我不是专家,但for循环在第一次运行时将m var替换为100,然后它在1到100(不是1到m)之间执行循环,并且它不会检查每次运行是什么,它知道m是100,并且它运行直到达到100,例如,如果您的脚本如下所示:
<code>
m=100;
for i=1:m (m is 100)
if(i==2)
m=1000;
for i=1:m (m is 1000)
a=xyz;
end
end
end
</code>
嗯,我试过这个(和你的想法类似)m=100;i=0;而(i
成功了。。!!谢谢。请阅读,特别是最后一节。避免在循环语句中为索引变量赋值。for语句覆盖对循环中的索引所做的任何更改。这真的是您想要的吗?还是你真的想做别的事?@Bernhard:是的,这就是我想要的。:)@GautamKrishna不,在这种情况下,只要把m=1000
去掉if
@Jonas,这就是问题:)人们永远不会发现问题所在,除非结果是错误的。假设调用double x=0;双y=正方形(x+1)代码>。这相当于double y=x+1*x+1==2*x+1!=(x+1)^2
。假设得到的表达式是二阶方程?呵呵,真是太邪恶了:)。无论如何,正确的定义是#定义平方(a)((a)*(a))
。我认为while循环是这里的解决方案。如果i==2,您可能不想重复。。。