![MATLAB R2020a智能算法及实例分析](https://wfqqreader-1252317822.image.myqcloud.com/cover/824/38601824/b_38601824.jpg)
1.7 MATLAB的程序结构
作为一种程序设计语言,MATLAB与一般高级程序语言一样,为用户提供了丰富的程序结构语言,以实现用户对程序流程的控制。
MATLAB的程序结构主要包括循环控制结构和条件选择结构。
1.7.1 循环控制结构
循环控制语句结构根据设置的条件重复执行指定语句,并按条件退出循环。在MATLAB中,循环控制结构有两种,分别为for循环与while循环。
1.for循环
for循环允许一组命令以固定的和预定的次数重复。for循环的一般形式为:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_58.jpg?sign=1738979655-9uKzudENgqYh8irD5xImuRQ9xPrelYU7-0-f073e732aa8c8d24532a9e8a61feda63)
在for和end之间的program statements按数组中的每一列执行一次。在每次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:,n)。如果增量默认系统,则默认为1。
【例1-16】设,求
。求函数
在
上的定积分的几何意义就是求曲线
与直线
、
、
围成的曲边梯形的面积。为了求得曲边梯形的面积,先将积分区间
分成
等份,每个区间的宽度为
,对应地将曲边梯形分成了
等份,每一小部分是一个小曲边梯形。近似求出每个小曲边梯形的面积,然后将
个小曲边梯形的面积加起来,就得到了总面积,即定积分的近似值。近似地求每个小曲边梯形的面积的常用方法有矩形法、梯形法及辛普森法则等。
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_72.jpg?sign=1738979655-4nS7YvX8KGfmYWdz76wkVP4mriTdaALB-0-e2b8751210bb1695906012f0be7e39aa)
运行程序,输出如下:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_73.jpg?sign=1738979655-BJkJmafcMRCepiGnLdturvAxLeRGifiT-0-aa10f3a5eab966bab6fdfd45c5993589)
2.while循环
与for循环以固定次数求一组命令的值相反,while循环以不定的次数求一组命令的值。while循环的一般形式为:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_74.jpg?sign=1738979655-TN6y4bvaksneKQQ2Mjrus8u9y7ydPMxF-0-d9fcfe7b067fc233e0e5a2754ffb33f8)
只要表达式中的所有元素为真,就执行while和end之间的statements。通常,表达式的求值会给出一个标量值,但数组值同样有效。在数组值的情况下,所得数组的所有元素必须都为真。
【例1-17】获得100以内的所有加法表达式,其中加数有两个,它们是1~99之间的数,同时限制第一个加数小于第二个加数。
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_75.jpg?sign=1738979655-cffo0r2QOPuqG0iLgnsuSxUYWVLXTR5Y-0-e1f2061ed6aa961f47fc8170c9191ccc)
运行程序,输出如下:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_76.jpg?sign=1738979655-zDfRETpxZNqKbVJM5mKM6hyI8F1IXpoU-0-4ae9234598f92a3a6c8ca08f37a940dc)
1.7.2 条件选择结构
条件选择结构根据给定的条件的真假选择执行不同的语句。MATLAB用if条件语句和switch条件语句实现条件选择结构。
1.if条件选择结构
if条件语句主要有以下三种调用格式。
(1)最简单的if-else-end语句的格式为:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_77.jpg?sign=1738979655-Ero74eKMrDifV14Qos7xYxTQbvddugV9-0-3d7d98f8e53c17f8f32c2f27491dd16a)
如果上述表达式中的所有元素均为真,就执行if和end之间的statements语句;如果条件为假,则不执行下面的表达式语句。当表达式包含几个逻辑子表达式时,即使前一个逻辑子表达式决定了表达式的最终逻辑状态,仍要计算所有的逻辑子表达式。
(2)当有两个选择时,if-else-end的结构如下:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_78.jpg?sign=1738979655-WMNOuKpNKYzVtiVTdTBwcGSJOCVO1LXN-0-b139b4401999a846798d207803b07c2a)
此时,如果表达式为真,则执行第一组语句statements1;如果表达式为假,则执行第二组语句statements2。
(3)当有三个或更多的选择时,if-else-end结构采用的形式如下:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_79.jpg?sign=1738979655-fyWyQnzdSwwXIqEUrxALKFbp2A6KUNv7-0-b6c3fe5e5b6c9f560f05b6818c98109c)
在这种选择结构中,当程序执行到某一表达式为真时,执行其后的相关语句,不再检验其他的关系表达式,会直接跳出此选择结构,而且最后的else命令可有可无。
【例1-18】用if条件语句计算x=9时的表达式的值。
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_81.jpg?sign=1738979655-CjqPARouzYtwFyntIIYy9NdOpBk5uzqS-0-a9f0fc6a7542566a71d239d16dd411be)
运行程序,输出如下:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_82.jpg?sign=1738979655-7b04sO4s1M89wiqITuwA1PpHRq3PqvI3-0-378623716e27c0926754b2a7a1259479)
2.switch条件选择结构
与C语言中的switch分支结构类似,在MATLAB中,switch适用于条件多且比较单一的情况,类似于一个数控的多个开关,其一般的语法格式为:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_83.jpg?sign=1738979655-Vbco7a9MrWxTsw4MV9JiWuc025Phs1Dl-0-db348035d273a5aa860c5ad49da04f4e)
在以上的语法结构中,expression为一个标量或字符串,MATLAB可以将表达式中的数值依次和各个case命令后的数值进行比较。如果比较结果为假,则MATLAB会自动与下一个数值进行比较,一旦比较结果为真,MATLAB就会执行相应的命令,然后跳出该分支结构。如果所有的比较结果都为假,即表达式的数值和所有的检测值都不相等,则MATLAB会执行otherwise部分的语句。
【例1-19】学生成绩分类:90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E,要求输入一个等级并输出其对应分数。
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_84.jpg?sign=1738979655-WSqA01A8EZZM1Ck58WfZBtsfd2GQSfFY-0-b5e40583d6463ddfed0e19058755cef6)
运行程序,在命令窗口中输出:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_85.jpg?sign=1738979655-UeWhk0hagypX60MMKzyYWH74URr9q0is-0-7fd42ab308d98272ade196cad4266cbe)
根据提示,输入对应的等级,如'B',输出的结果为:
![](https://epubservercos.yuewen.com/89B371/20308228401712906/epubprivate/OEBPS/Images/txt001_86.jpg?sign=1738979655-Wu4Y7MEV4ks4HNEJjl2ulDT3KXIr6xt5-0-3bca9c2416654411f596ba2670917fa5)
注意:在MATLAB中,switch条件选择结构只执行第一个匹配的case对应的语句组,因此不需要break语句。