ITKeyword,专注技术干货聚合推荐

注册 | 登录

matlab中for循环的循环变量在循环体中不能改变的问题

u010412719 分享于

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:Matlab循环自变量问题

Matlab的循环与C/C++等普通计算机语言的循环还是有很大的区别的。 看下面Matlab代码: a=[1 2 3 4 5 6];for i=1:6 if i==3, i=i-1; end di

matlab中for循环的循环变量在循环体中不能改变的问题

最近一直在写java,写习惯了,发现写matlab还是挺不习惯的,由于本人是通信专业的学生,因此,也就避免不了要做一些仿真,也就避免不了要写了一些matlab程序,例如:我们无论是在java中还是C/C++中的数组的某个元素的引用的形式如下:

b=a[i];//注意是中括号[]

但是在matlab中,是这样:b=a(i);小括号的有没有
每次在matlab中关于数组都写错呀,真心改不过来呀,哎
这也就算了,最近在项目中每当我检测到一个我想要的元素之后我要直接跳到这个点后面的N个元素再进行检测,发现根本不行呀。这是因为在for循环的循坏体中居然不能改变循环变量呀,例子程序如下:

推荐:一道c++问题(循环体内的局部变量内存分配和释放)

From: http://www.cnblogs.com/wy-wangyan/archive/2013/04/30/3051487.html 问题如下: 最近查找bug时碰到了循环体中局部变量的内存分配相关的问题,于是查找

a=[1,2,3,9,6,9,5,6,8,2,4,9,3];
[m,n]=size(a);
k=0;
for i=2:n-1
    i
    if (a(i-1)<a(i)&a(i)>a(i+1)&a(i)>8)
        k=k+1;
        i=i+5;%跳过5个数再进行检测 
    end   
end

上面的程序就是想把中间那个9不检测出来而写的一个例子程序,但是利用i=i+5;就是跳不过去呀,我的妈呀,居然不行呀,统计的结果

k=3

而不是k=2呀,我真的受不了了呀,不知道matlab为什么这样设计呀,可是,可是,我在java、C、C++中都是可以这样的呀;真的很头疼;作为程序员,发牢骚是可以的,但是我们还是要解决问题的,于是,在matlab中不能这样的原因如下:

  • for循环变量i会取哪些值,是第一次进入循环时就决定了的。无论在循环中做什么事都不会改变循环的起始,中止,或步长值。
  • 因此,当你需要这样做的时候,你需要使用while循环来实现

总结

  • 既然matlab这样设计了,我们也不能改变什么,只能自己小小抱怨下,自己再慢慢调整就好了

推荐:关于“不要在循环体内定义变量”

高人来解释一下,为什么有人推荐“不要在循环体内定义变量 这帖子已经这么久了,还没结。 kypfos(不在寻梦) 的回复最能说明问题:循环体外定义变量不会给循环带

matlab中for循环的循环变量在循环体中不能改变的问题 最近一直在写java,写习惯了,发现写matlab还是挺不习惯的,由于本人是通信专业的学生,因此,也就避免不了要做一些仿真,也就避免不了要写

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。