MATLAB中for循环变量值不增加

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB中for循环变量值不增加相关的知识,希望对你有一定的参考价值。

for i=1:m
for j=1:n
if (i-10>=1) && (j-10>=1) && (m-i>=10) && (n-j>=10)
A=I(i-10:i+10,j-10:j+10);
[mm,nn]=size(A);
Arow=ascend(A,1,mm*nn); %排列矩阵A中元素
[b1,b2]=boundryvalue(Arow); %函数
a=select_noise(A,b1,b2); %函数
map(i,j)=a;
end
end
end
循环一次后,循环变量i,j值均不变,是什么原因
不好意思,程序没有问题。谁先来分就给谁吧

从代码看,循环后i和j没有不变的理由(除非m、n为1,循环体只执行一次,实际上没有循环)。
顺便说一下,MATLAB的for循环是基于索引的,即使你在循环体里面修改控制变量i、j的值,也不会影响循环的执行次数(实际上在循环体里面修改的i、j可以看成临时创建的局部变量)。
参考技术A 我感觉是你的if (i-10>=1) && (j-10>=1) && (m-i>=10) && (n-j>=10)

里面应该用逻辑&而不是&&

for循环和while循环的区别?

  1. 在开发中,如果明确循环的次数,使用for循环 ;不明确循环次数,使用while循环
  2. 从内存角度考虑,for循环的格式for(初始语句;条件语句;步长语句){循环体语句...},for循环结束之后,
  3. {}中的变量值会及时从内存中释放掉,不会消耗内存空间!while循环结束,还可以去访问变量值,不会立即从内存中
    释放掉,等待GC垃圾回收器(垃圾回收线程,也称为守护线程!)空闲时候回收!
  4. 开发中优先使用for循环,其次是while循环

以上是关于MATLAB中for循环变量值不增加的主要内容,如果未能解决你的问题,请参考以下文章