MATLAB 程序设计
MATLAB提供了一个完善的程序设计语言环境,使用户能够方便地编制复杂的程序,完成各种计算。本节先介绍关系运算、逻辑运算,再介绍M-文件(即程序文件)的结构及MATLAB的程序控制流语句。
一、关系运算和逻辑运算
1.关系运算
(1)关系运算符:
< ;< = ;> ;> = ;= = ;~ =
(2)关系表达式:
用关系运算符将两个同类型的量(表达式)连接起来的式子。
【注】①关系运算本质上是标量运算,关系表达式的值是逻辑值(0-假1-真);
②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵。
例1.对向量进行关系运算。
>> A=1:5,B=5:-1:1 % 输入向量
A = 1 2 3 4 5 B = 5 4 3 2 1
>> C=(A>=4) % 对向量进行关系运算
C = 0 0 0 1 1
>> D=(A==B) % 对向量进行关系运算
D = 0 0 1 0 0
2.逻辑运算
(1)逻辑运算符:& (and,与)、| (or,或)、~ (not,非)
(2)逻辑表达式:用逻辑将两个逻辑量连接起来的式子。
【注】①逻辑运算本质上是标量运算,它将任何非零元素视为1(真);
②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵。(真值表见P27)
例2.对向量进行逻辑运算。
>> a=1:9,b=9-a
a = 1 2 3 4 5 6 7 8 9 b = 8 7 6 5 4 3 2 1 0
>> c=~(a>4) % 非运算
c = 1 1 1 1 0 0 0 0 0
>> d=(a>=3)&(b<6) % 与运算
d = 0 0 0 1 1 1 1 1 1
3.逻辑函数
any(x) 向量x中有非零元返回1,否则返回0。(向量函数)
all(x) 向量x中所有元素非零返回1,否则返回0。(向量函数)
isempty(x) 矩阵x为空矩阵返回1,否则返回0。
find(x) 返回向量x中非零元下标,若x是矩阵,则视其为一长列向量。
例3.对向量或矩阵进行逻辑运算,或调用逻辑函数。
>> a=[1 0 -5 0;-3 0 8 2]
a = 1 0 -5 0
-3 0 8 2
>> b=all(a),c=any(a)
b = 1 0 1 0
c = 1 0 1 1
>> x=isempty(a) % 判定矩阵a是否为空,不能用关系式”a==[]”!
x = 0
>> y=find(c) %返回向量c 中非零元下标
y = 1 3 4
>> z=find(a) % 1个输出参数
z = [1 2 5 6 8]’
>> [m,n]=find(a) % 2个输出参数
二、M-文件的结构
M-文件就是MATLAB程序文件,它是一个包含MATLAB语句组(命令序列)的普通ASCII文本文件,其扩展名为“.m”。M-文件有两类:脚本文件和函数文件。
1.脚本文件(亦称命令M-文件)
脚本文件的结构比较简单,它没有输入参数和输出参数,只是一些MATLAB命令行的组合。脚本文件中定义的变量都是全局变量。
例4.给定矩阵 , ,编写命令文件,输入矩阵A、B,并计算输出它们的和与差。
解:建立如下M-文件SY00504.m
A=[1 2 3;4 5 6]; % 输入矩阵A
B=[4 0 1;0 1 2]; % 输入矩阵B
C=A+B % 计算输出A与B的和
D=A-B % 计算输出A与B的差
将上述文件以SY00504.m为名存盘,然后在命令窗口调用此M-文件,则有
>> SY00504
C = 5 2 4 D = -3 2 2
4 6 8 4 4 4
2.函数文件(亦称函数M-文件)
和命令文件相比,函数文件稍微复杂一些。通常函数文件包含以下几个部分:
(1)函数定义行 位于文件首行,以function开头,说明函数名、输入/输出参数.
(2)帮助信息 紧跟函数定义行后面,以%开头的注释行,给出该函数的在线帮助.
(3)函数体 函数的执行语句部分,是函数文件的核心部分。
(4)注释部分 命令行中以符号“%”开始直到该行结束部分的注释语句。
例5.编写函数文件,计算任意两个同维数矩阵的和与差。(L000402.m)
解:建立如下函数文件SY00505.m
function [C,D]=SY00405(A,B)
% 给定矩阵A和B,计算输出其矩阵和C和矩阵差D
C=A+B; % 计算矩阵和
D=A-B; % 计算矩阵差
将上述文件以SY00405.m为名存盘,然后在命令窗口调用函数文件,则有
>> A=[1 2 3;4 5 6];B=[4 0 1;0 1 2];
>> [C,D]=SY00505(A,B)
C = 5 2 4 D = -3 2 2
4 6 8 4 4 4
【注】
函数文件的第一行必须是函数说明语句;输入参量用圆括号括起,输出参量多于1个时用方括号括起;多个输入/输出参量时,参量之间用逗号隔开。
函数文件的变量一般是局部变量,可以用global命令将某些变量说明为全局变量。
函数文件的文件名一般应与函数说明语句中定义的函数名相一致。
函数文件可以递归调用。
三、M-文件的建立、编辑与调用
1.M-文件的建立与编辑
方法1:在命令窗口输入命令:edit [M-文件名],即可打开相应M-文件编辑器。
方法2:单击菜单“File”->“New”->“M-file”,打开空白M-文件编辑器;
方法3:单击菜单“File”->“Open”->输入文件名,打开相应M-文件编辑器;
方法4:在当前目录窗口中选择某M-文件,双击则可打开该M-文件编辑器;
2.M-文件的调用
方法1:在MATLAB命令窗口中直接键入M-文件名,然后回车;
方法2:在当前目录窗口选择某M-文件,击右键选择命令RUN,即可运行该M-文件;
方法3:在M-文件编辑窗口中,单击工具钮RUN或菜单Debug/RUN,即可运行该M-文件。
【注】M被调用的M-文件必须位于当前目录或文件搜索路径范围内。
调用函数文件时,须事先对输入参量赋值,然后按照以下格式调用
输出参量=函数名(输入参量) (回车)
其中,实际参数和形式参数可以不同;输入参数要用小括号将其括起,输出参数多于一个时,要用中括号“[]”将其括起;参数间用逗号隔开。
四、MATLAB的控制流语句
MATLAB与其它计算机高级语言一样,有它自己的控制流语句,用户使用它们可以方便地编写出各种M-文件(应用程序)。
1.选择结构
(1)if 语句
一般格式:if <关系表达式1>
<语句体1>
elseif <关系表达式2>
<语句体2>
…
elseif <关系表达式n>
<语句体n>
else
<语句体n+1>
end
基本功能:若表达式j(j=1,2,…,n)的值为真,则执行语句体j,然后执行end的后续命令;否则,则执行语句体n+1,然后执行end的后续命令。
【注】if 语句结构中,关键字“else”和“elseif”所在语句行以及其后的语句体都不是必需的,但是关键字“end”不能省略。
例6.编写函数文件,计算分段函数
解:编写函数文件(fenduan.m)如下:
function y= fenduan(x) % 计算分段函数
if x<=0
>> x=-5:0.1:10;
>> n=length(x);
>> for k=1:n y(k)=fenduan(x(k));end
>> plot(x,y)
y=0; elseif x<=2*pi
y=sin(x);
else
y=x-2*pi;
end
(2)switch语句
一般格式: switch <表达式>
case 值1
<语句体1>
…
case 值n
matlab定义函数表达式 <语句体n>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论