MATLAB 决策制定
作者:互联网
if...end 语句
表达式的计算结果如果是“true”,那么在代码块中,如果语句会被执行。如果表达式计算结果为“false”,那么第一套代码结束后的语句会被执行。
这一组代码是fprintf常用的
格式代码 | 目的/作用 |
---|---|
%s | 输出字符串 |
%d | 输出整数 |
%f | 输出浮点数 |
%e | 显示科学计数法形式 |
%g | %f 和%e 的结合,根据数据选择适当的显示方式 |
我自己突发奇想打了这样一段:
statement1= 'I love her but I know my love is useless.';
statement2='I love you and you love me, too. ';
% check the condition using if statement
if strcmp(statement2,statement1)
% if condition is true then print the following
disp('剑谱最终页,无爱即是神' );
end
disp('离别,为了更美妙的重逢');
离别,为了更美妙的重逢
if...else...end 语句
在MATLAB的 if...else...end 语句中,if 语句后面可以跟一个可选择的 else 语句,当执行的表达式为假的时候,执行 else 语句。
自己编了一段简单的语句:
a=200;
% 检查输入的语句
if a~=200
% 如果条件正确将输出以下语句
fprintf('a不等于200');
else
%如果条件错误那么将执行以下语句
fprintf('a等于200');
end
a等于200
if...elseif...elseif...else...end 语句
MATLAB 的 if...elseif...elseif...else...end 语句中 if 语句可以跟随一个(或多个)可选的 elseif... else 语句,这是非常有用的,可以用来对各种条件进行测试。
使用 if... elseif...elseif...else 语句,要注意以下几点:
-
一个 if 可以有零个或多个 else,但是它必须跟在 elseif 后面(即只有 elseif 存在才会有 else)。
-
一个 if 可以有零个或多个 elseif ,必须出现else。
-
一旦 elseif 匹配成功,余下的 elseif 将不会被测试。
有点乱,理一下。elseif相当于if条件中的并列成分,好比有多条通路,能通过的通路就直接执行,即使剩下的有路可走也不去执行了,而else相当于上面提到的if…else…end型语句中的地位,只不过这次添加了好多与if地位等价的分支ifelse。elseif要与if对齐。可能不太准确,但对于我这样的新手够了。
以下是一个程序的示例:
a=100;%检查布尔条件
if a==22
%如果条件正确将执行以下语句
fprintf('a的值为22');
elseif a==332
%如果该条件成立
fprintf('a的值为332');
elseif a==44
%如果该条件成立
fprintf('a的值为44');
else
%如果上面的条件都不符合
fprintf('没有相应的值与之匹配 ');
fprintf('a的值为:%d',a);
end
没有相应的值与之匹配 a的值为:100>>
嵌套if语句
在MATLAB中嵌套if语句始终是合法的,也就是说可以使用一个嵌套的 if-else语句 if 或 elseif 语句在另一个 if 或 elseif 语句。可以嵌套 elseif 或其他类似的方式,因为已经嵌套 if 语句。
下面是一个例子
a=220;
b=221;
%检查布尔条件
if a==220
%if条件是正确的将输出以下语句
if b==221
%if 条件是正确的将印刷下面的语句
fprintf('a的值是220,b的值是221 ');
end
end
fprintf(' a的值为:%d',a);
fprintf(' b的值为:%d',b);
a的值是220,b的值是221 a的值为:220 b的值为:221
switch语句
MATLAB中 switch 块有条件地执行一组语句,这些语句是从几个选项里选择执行的,其中每个选项涵盖了一个 case 语句。
注意事项
- 计算 switch_expression 是一个标量或字符串。
- 计算 case_expression 是标量,标量或字符串的字符串或单元阵列。
switch 块的功能是测试每个 case ,直到被测试的其中一个 case 是 true 。
case 是 true 的情况如下:
-
对于数字,eq(case_expression,switch_expression).
-
对于字符串,strcmp(case_expression,switch_expression).
-
对于对象,支持 eq 函数,eq(case_expression,switch_expression).
-
对于单元阵列case_expression的,在单元阵列与switch_expression相匹配的元素中的至少一个,如上文所定义的数字,字符串和对象。
当上述有一个情况是 true,MATLAB 就执行与之相应的语句,然后不再执行以后的语句,直接退出 switch 块。
otherwise 块是可选的,任何情况下,只有当真正执行。
两个例子:
grade = 'A';
switch(grade)
case 'A'
fprintf('Excellent!' );
case 'B'
fprintf('Well done' );
case 'C'
fprintf('Well done' );
case 'D'
fprintf('You passed' );
case 'F'
fprintf('Better try again' );
otherwise
fprintf('Invalid grade' );
end
Excellent!
PM2.5是指大气中直径小于或等于2.5微米的可入肺颗粒物,是衡量空气质量的重要指标。假定空气质量等级以PM2.5数值划分为6级。
PM2.5数值在[0,35)空气质量为优,[35,75)为良,[75,115)为轻度污染,[15,150)为中度污染,[150,250)为重度污染,大于等于250为严重污染。
编写程序,输入PM2.5数值,输出空气质量等级。
g=input('请输入PM2.5值:);
switch fix(g)
case num2cell(0:34)
disp('空气质量优');
case num2cell(35:74)
disp('空气质量良好');
case num2cell(75:114)
disp('空气质量轻度污染');
case num2cell(115:149)
disp('空气质量中度污染');
case num2cell(150:249)
disp('空气质量重度污染');
otherwise
disp('空气质量严重污染');
end
嵌套switch语句
在 MATLAB 中嵌套 switch 语句是可能的,可以在 switch 一部分外嵌套 switch 语句序列。即使 case 常量的内部和外部的 switch 含有共同的值,也不算冲突出现。
一个例子:
a = 100;
b = 200;
switch(a)
case 100
disp('Just like the street light lit this town ' );
switch(b)
case 200
disp('Can not be afaid to live this out' );
end
end
Just like the street light lit this town
Can not be afaid to live this out
标签:语句,case,...,决策制定,switch,fprintf,MATLAB,elseif 来源: https://blog.csdn.net/sharpeer/article/details/122487389