讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。
MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili
节选自第4章:MATLAB程序流程控制
我们通过一个经典例题来理解if的嵌套,所谓if的嵌套,是指在if、elseif或者else下方的语句中又出现了if语句(一定要注意:每个if都要有配套的end)。
例题:已知a、b和c是三个互不相等的常数,请使用if语句找出a、b和c三个数的最大值。(注意,这里是练习条件语句,请不要使用max函数直接求最大值)
如果使用原来的思路,我们需要找到各种可能情况并进行多次判断,流程图和代码如下:
注意:a>b且a>c涵盖了表中前两种排序的情况;c>b且c>a则涵盖了表中第三种和第四种排序的情况;如果都不满足则只剩下表中最后两种排序的情况,此时最大值为b.
a = 5; b = 8; c = 3; % 随便编一组数据测试
if a > b && a > c
Max = a; % 不要命名为小写的max,否则和内置函数重名了
elseif c > b && c > a
Max = c;
else
Max = b;
end
Max
下面我们换一种思路,我们判断的流程图如下:
从上图可以看出:我们首先判断a和b的大小关系,然后根据第一次的判断结果分别进行条件判断,因此出现了嵌套的情况。根据上述流程图可编写下面的代码:
if a>b
if a>c % 此时a>b且a>c
Max=a;
else % 此时a>b且c>a
Max=c;
end % a>c前面的那个if配套的end,通过缩进可以看出
else % 此时a<b
if b>c % 此时a<b且b>c
Max=b;
else % 此时a<b且b<c
Max=c;
end % b>c前面的那个if配套的end,通过缩进可以看出
end % 最上方的if配套的end
Max