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 将不会被测试。

 MATLAB 决策制定

 

有点乱,理一下。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 块是可选的,任何情况下,只有当真正执行。

MATLAB 决策制定

两个例子: 

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

上一篇:oracle数据泵EXPDP和IMPDP使用说明


下一篇:生产环境mysql主主同步主键冲突处理