凡是过往,皆为序章

0%

MATLAB课程总结(四)

这篇文章总结MATLAB程序设计,主要涉及代码文件方面。


程序的三个结构

顺序结构

1、数据的输入

从键盘输入数据,则可以使用input函数来进行,调用格式为:

A = input(提示信息,选项);

其中提示信息为一个字符串,用于提示用户输入数据。

2、数据的输出

命令窗口输出函数主要有disp函数,其调用格式为:

disp(输出项)

其中输出项既可以为字符串,也可以为矩阵。

若输出多个数据,并显示提示信息,则需要:

1
disp(['提示信息',num2str(A)]); 	%num2str函数将任何数值转换为字符

例题

1
2
3
4
5
6
7
8
9
10
11
a = input('a=?');
b = input('b=?');
c = input('c=?');
d = b*b-4*a*c;
x = [(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];
disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
程序输出为:
a=?4
b=?78
c=?54
x1=-0.7188,x2=-18.7812 %注意disp函数的用法

3、程序的暂停

程序执行过程中暂停,可用pause函数,其调用格式为:

pause(延迟描述)

如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。

若要强行中止程序的运行可按Ctrl+C键。

选择结构

if-else

1
2
3
4
5
6
7
8
9
if 条件1
语句组 1
elseif 条件2
语句组 2
elseif 条件m
语句组 m
else
语句组n
end

switch

1
2
3
4
5
6
7
8
9
10
switch 表达式
case 表达式1
语句组1
case 表达式2
语句组2
case 表达式m
语句组m
otherwise
语句组 n
end

switch子句后面的表达式应为一个标量或一个字符串;case子句后面的表达式不仅可以为一个标量或一个字符

串,还可以为一个元胞矩阵。

try

1
2
3
4
5
try
语句组1
catch
语句组2
end

try语句先试探性执行语句组1,如果在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。

循环结构

for语句

1
2
3
for 循环变量 =表达式1:表达式2:表达式3
循环体语句
end

其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。

例题(注意这个例题的非循环方法)

while语句

1
2
3
while条件
循环体语句
end

break语句和continue语句

它们一般与if语句配合使用。

break语句用于终止循环的执行。

当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。

continue语句控制跳过循环体中的某些语句。

当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。

M文件的分类

除了在命令窗口直接操作,我们可以创建文件(M文件)来进行调用,使程序结构简单,编程效率高。

用Matlab语言编写的程序,称为M文件。

是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。

◼ M文件根据调用方式的不同分为两类:

​ 命令文件(Script File)

​ 函数文件(Function File)

◼ 它们的扩展名都是.m

命令文件和函数文件的区别

命令文件没有输入参数,也不返回输出参数;函数文件可以带输入参数,也可以返回输出参数。

◼ 命令文件对工作空间中的变量进行操作,文件中所有命令的执行结果也返回工作空间中;函数文件中定义的变

​ 量为局部变量,当函数文件执行完毕时,这些变量也被清除。

◼ 命令文件可以直接运行;函数文件不能直接运行,要以函数调用的方式来调用它。

函数文件

函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。Matlab提供的标准函数大部分是由函数文件定义的。

函数文件的基本结构

1
2
3
function 输出形参表 = 函数名(输入形参表)
注释说明部分
函数体语句

其中,以function开头的一行为引导行,表示该M文件是一个函数文件。当输出形参多于一个时,应该用方括号括起来。

注意:

  1. 关于函数文件名

    函数文件名通常由函数名再加上扩展名.m组成。

    当函数文件名与函数名不同时,Matlab将忽略函数名而确认文件名,因此调用时使用函数文件名

  2. 关于注释说明部分

    注释说明包括3部分:

    ① 紧随引导行之后以%开头的第一注释行。

    这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和help在线帮助时使用。

    ② 第一注释行及之后连续的注释行。

    通常包括函数输入/输出参数的含义及调用格式说明等信息,构成全部在线帮

    ③ 与在线帮助文本相隔一空行的注释行。包括函数文件编写和修改的信息,如作者和版本等。

  3. 关于return语句
    如果在函数文件中插入了return语句,则执行到该语句就结束函数的执行,流程转至调用该函数的位置。通常也不使用return语句。

例题:编写函数文件,求半径为r的圆的面积和周长。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
函数文件如下:

function [s,p] = fcircle(r)
% FCIRCLE calculate the area and perimeter of a circle of radii r
% r 圆半径
% s 圆面积
% p 圆周长
%2006年2月30日编
s = pi*r*r;
p = 2*pi*r;

将以上函数文件以文件名fcircle.m保存,然后在命令窗口调用。
[s,p] = fcircle(10)
输出结果是:
s =
314.1593
p =
62.8319

采用help命令或lookfor命令可以显示出注释说明部分的内容。
help fcircle
屏幕显示
FCIRCLE calculate the area and perimeter of a circle of radii r
r 圆半径
s 圆面积
p 圆周长

函数调用

函数调用的一般格式是:

[输出实参表] = 函数名(输入实参表)

注意:函数调用时,各实参出现的顺序、个数,应与函数定义时相同。

在Matlab中,函数可以嵌套调用,即一个函数可以调用别的函数。一个函数调用自身称为函数的递归调用。

函数参数的可调性

Matlab在函数调用上有一个与一般高级语言不同之处:

函数所传递参数数目的可调性,即参数的数量可以改变。

在调用函数时,Matlab用两个预定义变量narginnargout分别记录调用该函数时的输入实参和输出实参的个数。

例子

全局变量与局部变量

Matlab中,函数文件中的变量是局部变量。

如在若干函数中,都把某一变量定义为全局变量,那么这些函数将共用这个变量。

全局变量的作用域是整个Matlab的工作空间,所有函数都可以对它进行存取和修改。

全局变量用global命令定义,格式为:

global 变量名

~感谢你请我吃糖果~
-------------本文结束,感谢您的阅读,欢迎评论留言!-------------