M文件程序控制语句通常包括顺序语句、循环语句、选择语句和交互语句等.虽然MATLAB不像C、Fortran等高级语言那样具有丰富的控制语句,但是MATLAB自身强大的函数功能弥补了这种不足,使用户在编写M文件时并不感觉困难.
顺序语句是最简单的控制语句,就是按照顺序从头至尾地执行程序中的各条语句.顺序语句一般不包含其他子语句或控制语句.
例1-18 一个仅由顺序语句构成的M文件.
解 MATLAB命令为:
运行结果为:
在实际过程中经常会遇到一些需要有规律地重复进行运算的问题,此时,就需要重复执行某些语句,这样就需要用循环语句进行控制.在循环语句中,被重复执行的语句称为循环体,每个循环语句通常都包含循环条件,以判断循环是否继续进行下去.MATLAB提供了两种循环方式:for循环和while循环.
1.for循环语句
for循环语句使用起来较为灵活,一般用于循环次数已经确定的情况,它的循环判断条件通常是对循环次数的判断.for语句的调用格式为:
其中,表达式1为循环初值,表达式2为循环步长,表达式3为循环终值.如果省略表达式2,则默认步长为1.对于正的步长,当i的值大于表达式3的值时,将结束循环;对于负的步长,当i的值小于表达式3的值时,将结束循环.for语句允许嵌套使用,一个for关键字必须和一个end关键字相匹配.
例1-19 用for循环语句生成1~ n 的乘法表.
解 MATLAB命令为:
运行结果为:
在for循环语句中通常需要注意以下事项:
1)for语句一定要有end关键字作为结束标志,否则以下的语句将被认为包含在for循环体内.
2)循环体中每个语句结尾处一般用分号“;”结束,以避免中间运算过程的输出.如果需要查看中间结果,则可以去掉相应语句后面的分号.
3)如果循环语句为多重嵌套,则最好将语句写成阶梯状,这样有助于查看各层的嵌套情况.
4)不能在for循环体内强制对循环变量进行赋值来终止循环的运行.例如:
2.while循环语句
与for循环语句相比,while循环语句一般用于不能确定循环次数的情况.它的判断控制可以是一个逻辑判断语句,因此它的应用更加灵活.
while循环语句的调用格式为:
当逻辑表达式的值为真时,执行循环体语句;当逻辑表达式的值为假时,终止该循环.当逻辑表达式的计算对象为矩阵时,只有当矩阵中所有元素均为真时,才执行循环体.当表达式为空矩阵时,不执行循环体中的任何语句.为了简单起见,通常可以用函数all和any等把矩阵表达式转换成标量.在while循环语句中,可以用break语句退出循环.
例1-20 寻找阶乘超过10 10 的最小整数.
解 MATLAB命令为:
运行结果为:
在一些复杂的运算中,通常需要根据特定的条件来确定进行何种计算,为此MATLAB提供了if语句和switch语句,用于根据条件选择相应的计算语句.
1.if语句
if语句根据逻辑表达式的值来确定是否执行选择语句体.if语句的调用格式如下:
当执行if语句时,首先判断逻辑表达式1的值,当逻辑表达式1的值为真时,执行选择语句体1,执行完选择语句体1后,跳出该选择语句体继续执行end后面的语句;当逻辑表达式1的值为假时,跳过选择语句体1继续判断逻辑表达式2的值;当逻辑表达式2的值为真时,执行选择语句体2,执行完选择语句体2后跳出选择语句体结构.如此进行,当if和elseif后的所有表达式的值都为假时,执行语句体else.
例1-21 编写一个函数文件,计算分段函数的数值:
解 MATLAB命令为:
1)建立M函数文件li21.m:
2)调用M函数文件计算 f (0.2), f (2), f (30), f (10π):
运行结果为:
2.switch语句
switch语句和if语句类似.switch语句根据变量或表达式的取值不同分别执行不同的命令.该语句的调用格式如下:
当表达式的值为1时,转到语句体1;当表达式的值为2时,执行语句体2;当表达式的值不为关键字case所列的值时,执行语句体otherwise.
例1-22 编写一个函数文件,根据不同的输入值给出不同的显示信息.
解 MATLAB命令为:
将文件保存为li22.
运行结果为:
在很多程序设计语言中,经常会遇到输入输出控制、提前终止循环、跳出子程序、显示出错信息等.此时就要用到交互语句来控制程序的进行.
1.输入输出控制语句
输入输出语句包括用户输入提示信息语句(input)和请求键盘输入语句(keyboard).
1)input用来提示用户从键盘输入数据、字符串或表达式,并接收输入值.其调用格式如下:
●a=input(’prompt’)在屏幕上显示提示信息prompt,等待用户的输入,输入的数值赋给变量a.
●b=input(’prompt’,’s’)返回的字符串作为文本变量而不是变量名或数值.
如果没有输入任何字符,只是按回车键,input将返回一个空矩阵.在提示信息的文本字符串中可能包含“ n”字符.“ n”表示换行输出,它允许用户的提示字符串显示为多行输出.2)keyboard是在M文件中请求键盘输入命令.其调用格式如下:
keyboard 该命令被放置在M文件中时,将停止文件的继续执行并将控制权传给键盘.
通过在提示符前显示K来表示一种特殊状态.在M文件中使用该命令,对程序的调试及在程序运行中修改变量都很方便.
为了终止keyboard模式,可以输入命令return,然后按回车键.
2.等待用户响应命令pause
pause命令用于暂时中止程序的运行.当程序运行此命令时,将暂时中止,然后等待用户按任意键继续运行.该命令在程序的调试过程和用户需要查询中间结果时十分有用,该命令的调用格式如下:
●pause 此命令将导致M文件停止运行,等待用户按任意键继续运行.
●pause(n) 在继续运行前中止执行程序n秒,这里n可以是任意实数.时钟的精度是由MATLAB的工作平台所决定的,绝大多数工作平台都支持0.01秒的时间间隔.
●pause on 允许后续的pause命令中止程序的运行.
●pause off 保证后续的任何pause或pause(n)语句都不中止程序的运行.
3.中断命令break
break命令通常用在循环语句或条件语句中.通过使用break命令,可以不必等待循环的自然结束,而是根据循环的终止条件来跳出循环.
例1-23 编写一个函数文件,计算鸡兔同笼问题,即输入个数和脚数,求解鸡兔各有多少.
解 MATLAB命令为:
运行结果为:
4.continue命令
continue命令经常与for或while循环语句一起使用,作用是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次循环.该命令的调用格式如下:
continue结束本次循环进入下一次循环.
5.return命令
return命令能够使当前的函数正常退出.这个语句经常用于函数的末尾,以正常结束函数的运行.当然,该函数也经常用于其他地方,首先对特定条件进行判断,然后根据需要,调用该语句终止当前运行,并返回.
6.error语句
在进行程序设计时,很多情况下会出现错误,此时如果能够及时把错误显示出来,则用户将能够根据错误信息找到错误的根源.MATLAB提供的error语句就是用于完成这类功能的.该语句的调用格式如下:
●error(’message’) 显示错误信息,并将控制权交给键盘.提示的错误信息是字符串message的内容.如果message是空的字符串,则error命令将不起作用.
●error(’message’,A1,A2,…,An) 显示的错误信息字符串中包含有格式化字符,例如,用于MATLABsprintf函数中的特殊字符.在提示信息中,每一个转化字符被转换成参数表中的A1,A2,…,An.
●error(’errID’,____) 包含此异常中的错误标识符。此标识符可用于区分错误,它还允许你控制在MATLAB遇到错误时系统做何反应。可以包括先前语法中的任何输入参数。
●error(errorStruct) 使用标量结构体中的字段抛出错误。
●error(correction,___) 为异常提供建议修复。可以包括先前语法中的任何输入参数。
7.warning语句
warning语句的用法与error语句类似,与error不同的是,warning语句不会中断程序的执行,仅给出警告信息.
8.echo语句
一般情况下,执行M文件时,在命令行窗口中看不到文件中的命令,但在某些情况下,需要查看M文件中命令的执行情况.为此需要将M文件中的所有命令在执行过程中显示出来,此时可以使用echo语句.