matlab if else语句怎么用?
1个回答
展开全部
if h(i,j)==a1(i,j)
e(i,j)=a(i,j);
elseif h(i,j)==b1(i,j)
e(i,j)=b(i,j);
elseif h(i,j)==c1(i,j)
e(i,j)=c(i,j);
else h(i,j)==d1(i,j)
e(i,j)=d(i,j);
end
对这一段程序仔细分析,我没有仔细分析前面的程序,但可以猜测以下,h(i,j)肯定会和a1(i,j)、b1(i,j)、c1(i,j)、d1(i,j)中的某一个相等,这样当h(i,j)和a1(i,j)、b1(i,j)、c1(i,j)不相等的时候,就会执行到最后一条else语句
else h(i,j)==d1(i,j)
e(i,j)=d(i,j);
这时候ans=1;就会出现了。
也就是Matlab把h(i,j)==d1(i,j)当做是一条单独的语句,而不是判断条件。
究其原因,就是,if-elseif-else-end最后一个else是不用判断条件的,前面的条件都不满足就会执行else后的语句。
再加上,用来计算的矩阵是由rand随机生成的,这样,就可以很好的解释为什么有时多,有时少,数量不确定的现象了。
所以修改的办法是:1,把h(i,j)==d1(i,j)删除;2,把else改成elseif。
对于这个程序,我感觉用if语句还是比较合理的,用switch-case可以用,但是它不适合这样的分支条件
e(i,j)=a(i,j);
elseif h(i,j)==b1(i,j)
e(i,j)=b(i,j);
elseif h(i,j)==c1(i,j)
e(i,j)=c(i,j);
else h(i,j)==d1(i,j)
e(i,j)=d(i,j);
end
对这一段程序仔细分析,我没有仔细分析前面的程序,但可以猜测以下,h(i,j)肯定会和a1(i,j)、b1(i,j)、c1(i,j)、d1(i,j)中的某一个相等,这样当h(i,j)和a1(i,j)、b1(i,j)、c1(i,j)不相等的时候,就会执行到最后一条else语句
else h(i,j)==d1(i,j)
e(i,j)=d(i,j);
这时候ans=1;就会出现了。
也就是Matlab把h(i,j)==d1(i,j)当做是一条单独的语句,而不是判断条件。
究其原因,就是,if-elseif-else-end最后一个else是不用判断条件的,前面的条件都不满足就会执行else后的语句。
再加上,用来计算的矩阵是由rand随机生成的,这样,就可以很好的解释为什么有时多,有时少,数量不确定的现象了。
所以修改的办法是:1,把h(i,j)==d1(i,j)删除;2,把else改成elseif。
对于这个程序,我感觉用if语句还是比较合理的,用switch-case可以用,但是它不适合这样的分支条件
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询