这篇文章总结MATLAB程序设计,主要涉及代码文件方面。
程序的三个结构
顺序结构
1、数据的输入
从键盘输入数据,则可以使用input函数来进行,调用格式为:
A = input(提示信息,选项);
其中提示信息为一个字符串,用于提示用户输入数据。
2、数据的输出
命令窗口输出函数主要有disp函数,其调用格式为:
disp(输出项)
其中输出项既可以为字符串,也可以为矩阵。
若输出多个数据,并显示提示信息,则需要:
1 | disp(['提示信息',num2str(A)]); %num2str函数将任何数值转换为字符 |
例题
1 | a = input('a=?'); |
3、程序的暂停
程序执行过程中暂停,可用pause函数,其调用格式为:
pause(延迟描述)
如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。
若要强行中止程序的运行可按Ctrl+C键。
选择结构
if-else
1 | if 条件1 |
switch
1 | switch 表达式 |
switch子句后面的表达式应为一个标量或一个字符串;case子句后面的表达式不仅可以为一个标量或一个字符
串,还可以为一个元胞矩阵。
try
1 | try |
try语句先试探性执行语句组1,如果在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。
循环结构
for语句
1 | for 循环变量 =表达式1:表达式2:表达式3 |
其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。
例题(注意这个例题的非循环方法)
while语句
1 | while条件 |
break语句和continue语句
它们一般与if语句配合使用。
break语句用于终止循环的执行。
当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。
continue语句控制跳过循环体中的某些语句。
当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。
M文件的分类
除了在命令窗口直接操作,我们可以创建文件(M文件)来进行调用,使程序结构简单,编程效率高。
用Matlab语言编写的程序,称为M文件。
是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。
◼ M文件根据调用方式的不同分为两类:
命令文件(Script File)
函数文件(Function File)
◼ 它们的扩展名都是.m
命令文件和函数文件的区别
命令文件没有输入参数,也不返回输出参数;函数文件可以带输入参数,也可以返回输出参数。
◼ 命令文件对工作空间中的变量进行操作,文件中所有命令的执行结果也返回工作空间中;函数文件中定义的变
量为局部变量,当函数文件执行完毕时,这些变量也被清除。
◼ 命令文件可以直接运行;函数文件不能直接运行,要以函数调用的方式来调用它。
函数文件
函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。Matlab提供的标准函数大部分是由函数文件定义的。
函数文件的基本结构
1 | function 输出形参表 = 函数名(输入形参表) |
其中,以function开头的一行为引导行,表示该M文件是一个函数文件。当输出形参多于一个时,应该用方括号括起来。
注意:
关于函数文件名
函数文件名通常由函数名再加上扩展名.m组成。
当函数文件名与函数名不同时,Matlab将忽略函数名而确认文件名,因此调用时使用函数文件名。
关于注释说明部分
注释说明包括3部分:
① 紧随引导行之后以%开头的第一注释行。
这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和help在线帮助时使用。
② 第一注释行及之后连续的注释行。
通常包括函数输入/输出参数的含义及调用格式说明等信息,构成全部在线帮
③ 与在线帮助文本相隔一空行的注释行。包括函数文件编写和修改的信息,如作者和版本等。
关于return语句
如果在函数文件中插入了return语句,则执行到该语句就结束函数的执行,流程转至调用该函数的位置。通常也不使用return语句。
例题:编写函数文件,求半径为r的圆的面积和周长。
1 | 函数文件如下: |
函数调用
函数调用的一般格式是:
[输出实参表] = 函数名(输入实参表)
注意:函数调用时,各实参出现的顺序、个数,应与函数定义时相同。
在Matlab中,函数可以嵌套调用,即一个函数可以调用别的函数。一个函数调用自身称为函数的递归调用。
函数参数的可调性
Matlab在函数调用上有一个与一般高级语言不同之处:
函数所传递参数数目的可调性,即参数的数量可以改变。
在调用函数时,Matlab用两个预定义变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。
例子
全局变量与局部变量
Matlab中,函数文件中的变量是局部变量。
如在若干函数中,都把某一变量定义为全局变量,那么这些函数将共用这个变量。
全局变量的作用域是整个Matlab的工作空间,所有函数都可以对它进行存取和修改。
全局变量用global命令定义,格式为:
global 变量名