ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MATLAB 决策制定

2022-01-15 12:29:59  阅读:195  来源: 互联网

标签:语句 case ... 决策制定 switch fprintf MATLAB elseif


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有