Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:更新循环中的最大计数不会';行不通_Matlab_Loops - Fatal编程技术网

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

我已经在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);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,您可能不想重复。。。