matlab中if、else语句运算结果为啥只显示最后一个if的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中if、else语句运算结果为啥只显示最后一个if的值?相关的知识,希望对你有一定的参考价值。

参考技术A 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可以用,但是它不适合这样的分支条件

条件选择

6.1 三种控制程序流程:顺序执行语句、选择执行分支语句、有条件的执行循环语句

选择结构(if、if/else、switch)

循环控制结构(while、for)

6.2 条件 if

如果if条件满足,则表达式结果为真,执行if后的语句块,否则表达式为假,不执行语句块

6.2.1 if/else  分支结构

如果表达式为真,执行花括号中的语句块,否则,执行else后的语句块

条件运算符是一个三元运算符

条件表达式?表达式:表达式

6.2.2 if/else  if

6.2.3 switch

swicth语句通常叫做case语句

case关键字后面的表达式叫标签,标签以冒号结束,执行语句,遇到break跳出switch块

6.3 循环(while、for、do/while)

6.3.1 while循环

当while表达式为真时,即非null,非零,非假时,while语句会一直重复执行(无限循环),直到条件变为假(条件在表达式后)

6.3.3 for循环

for循环是for关键字及三个表达式组成,这三个表达式有分号隔开,并包含在一个圆括号内

第一个表达式用来给变量赋初始值,且只执行一次

第二个表达式用来测试循环是否继续或停止

第三个表达式用来更新循环变量,递增或递减

6.3.4 for/in循环

for/in循环与for循环类似,不同点在于for/in使用了javascript对象,它不是基于循环条件重复执行语句,而是根据对象的属性

6.3.5 使用break和continue控制循环

break退出循环

 continue的意思是跳过本次循环,进入下一次循环 

6.3.6 嵌套循环及标签

嵌套循环按顺序执行

标签是给循环起了一个名字,用break标签可以直接退出循环

 

例:

1、编写一个while循环,显示数字:10 9 8 7 6 5 4 3 2 1.把数字放到HTML表格单元中。

var a = 10;
while(a > 0){
  var str = "<table><tr>";
  str += "<td>"+a+"</td>";
  str += "</tr></table>";
  a--;
  document.write(str);
}

2、使用公式生成一个转换表: C = (F-32)/1.8;

从华氏20度开始到120度结束,步进增量为5.表格由两列组成,一列表示华氏温度值,另一列表示这些温度对应的摄氏温度值。

function change(F){
  return Math.ceil((F-32)/1.8);
}
var str = "<table>";
for(var i=20; i<=120; i+=5){
  var C = change(i);
  str += "<tr>";
  str += "<td>"+i+"</td><td>"+C+"</td>";
  str += "</tr>";
}
str += "</table>";
document.write(str);

 3、询问用户开发javascript语言的公司名称。如果用户输入错误,提示错误并继续提问,直到用户输入正确的答案为止。在用户输入正确时,给出确认。

while(true){
  var name = prompt("javascript语言的公司名称","");
  if(name == "Netscape"){
    break;
  }
}

以上是关于matlab中if、else语句运算结果为啥只显示最后一个if的值?的主要内容,如果未能解决你的问题,请参考以下文章

为啥编译器告诉我没有运算符与我的“if”和“else if”语句中的操作数类型匹配?

为啥使用“if-else”语句会在看似相同的三元运算符构造不会产生 TypeScript 编译器错误?

c语言中连续3个if语句 三种情况,大于等于小于0,为啥只执行第一个if就不执行下面的了?请问

[Golang]运算符,条件控制语句--[if]-[if-else]-[for]-[switch]-[goto]

java学习第二天

Python:为啥 if-else 一行语句在 else 中不能与 continue 一起使用?