第二章MATLAB语言的使用与程序设计说明书.docx
- 文档编号:23971797
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:35
- 大小:38.99KB
第二章MATLAB语言的使用与程序设计说明书.docx
《第二章MATLAB语言的使用与程序设计说明书.docx》由会员分享,可在线阅读,更多相关《第二章MATLAB语言的使用与程序设计说明书.docx(35页珍藏版)》请在冰豆网上搜索。
第二章MATLAB语言的使用与程序设计说明书
第二章MATLAB语言的使用与程序设计
第一节MATLAB系统简介
MATLAB是由美国MathWorks公司推出的用于数值计算和图形处理的科学计算语言。
它是MatrixLaboratory(矩阵实验室)的英文缩写。
它的第一版发行于1984年,经过20年的不断改进,到目前为止已推出了4.0,5.0,5.2,5.3,6.0,6.1,6.5等版本。
它不但具有以矩阵计算为基础的强大数学计算和分析功能,而且还具有丰富的可视化图形表现功能和方便的程序设计能力,以及许多具有特殊意义的MATLAB工具箱,如:
控制系统工具箱、信号处理工具箱、系统辩识工具箱、模糊控制工具箱、神经网络工具箱等等。
所有这些为系统仿真提供了十分便利的条件。
特别是1992年该公司推出的交互式模型输入与仿真环境SIMULINK,更为系统仿真打开了崭新的局面。
现在MATLAB已广泛地应用于自动控制、信号处理、图像分析、人工智能、生物医学工程、通信工程和金融系统等领域,是国际上最流行的系统辅助设计与系统仿真的软件工具。
1.1MATLAB的主要组成部分
MATLAB系统包括5个主要部分:
1)MATLAB语言体系:
MATLAB语言是一种以矩阵运算为基础的高级语言,具有条件控制、函数调用、数据结构、输入输出及面向对象等程序语言特征,可以进行程序设计。
2)开发环境:
MATLAB开发环境由一组工具和组件组成,是图形化的用户界面,包括MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器、文件和搜索路径浏览器。
3)MATLAB数学函数库:
包括各种数学算法所形成的函数(从基本函数到高级函数),以及各种工具箱里的函数。
4)图形系统:
包括数据图示、图像处理、动画生成、图形显示以及图形界面设计等功能,还可以通过使用图形句柄完成复杂的图形功能,实现对所有图形对象的操作。
5)应用程序接口:
MATLAB还提供了应用程序接口库函数,用户可在MATLAB环境中使用C或FORTRAN程序。
此外,MATLAB本身提供了较完善的在线帮助软件环境,用户可以通过它查询一些不熟悉的命令功能与调用格式。
它还具有很强的功能扩展能力,可以自己开发工具箱。
1.2MATLAB开发环境
MATLAB6的开发环境由命令窗口、启动平台窗口、工作空间窗口、命令历史窗口、当前路径窗口、M文件编辑器及在线帮助浏览器等组成。
MATLAB6的开发环境是MATLAB语言的基础和核心,MATLAB的全部功能都是在开发环境中实现的。
因此,掌握MATLAB的开发环境是掌握MATLAB语言的关键。
下面先看一下MATLAB的基本界面。
包括5个窗口(缺省状态下显示3个窗口)和主菜单。
每个窗口有两个按钮,按钮可使该窗口脱离操作桌面独立出来。
也可以通过View菜单来选择显示那些窗口。
View菜单中的DesktopLayout选项给出了6种布局方式。
(见书5页)
1.命令窗口:
提供交互式操作功能,即在命令窗口中直接输入命令或MATLAB函数,系统自动反馈信息和结果。
直接输入数学公式回车,即可得到公式的计算结果。
如需对前面的公式进行修改,可按一次键,(它可以重写前面的公式或命令),进行修改即可。
2.启动平台窗口:
在启动平台窗口中包括了系统中已安装的全部MATLAB程序和帮助文件的管理和启动功能,它采用了树型菜单的形式,用户可以直接从启动平台进入所选定项目。
启动平台实际上是由文本写成的M文件,用户也可以自己编辑。
3.工作空间窗口:
是MATLAB的一个变量管理中心,可以显示变量的名称、尺寸、字节和类别等信息,同时用不同的图标表示矩阵、字符数组、单元数组、结构及符号对象等变量类型。
它的处理功能:
在某一变量上单击鼠标右键,会弹出菜单,对变量进行处理,可选存或全部保存。
4.命令历史窗口:
在命令历史窗口显示已执行过的命令。
在窗口的某一命令上单击鼠标右键,会弹出菜单,对所选命令进行操作。
Copy:
将所选命令拷贝到剪贴板;
EvaluateSelection:
执行所选命令;
CreateM-File:
打开编辑器,将所选命令复制到编辑器;
DeleteSelection:
删除所选历史命令(不确认是否删除);
DeletetoSelection:
从头删除所选历史命令(不确认是否删除);
DeleteEntireHistory:
清除全部历史命令(将弹出对话框确认是否清除)。
5.当前路径窗口:
当前路径窗口提供了当前路径文件的操作,在窗口的某一文件上单击鼠标右键,会弹出菜单,对所选文件进行操作。
MATLAB的搜索路径:
搜索路径是一系列文件路径的组合。
当程序和命令执行时,MATLAB在搜索路径中查找程序或命令运行所需的函数文件。
MATLAB在执行搜索时按照规定的顺序。
如:
在命令窗口中输入example,MATLAB将按下面的步骤来处理:
1)检查example是不是一个变量,如果是,则返回变量的值;
2)如果不是变量则检查是否为一个内部函数,如果是,则执行该内部函数;
3)否则检查当前文件夹中是否存在名为example的文件,如果有则执行该文件;
4)否则检查在MATLAB的搜索路径的目录下是否存在名为example的文件,如果有则执行该文件。
可用MATLAB的path命令查看MATLAB系统的当前搜索路径。
在命令窗口键入path回车,即可看到。
可用主菜单中的SetPath选项重新设置搜索路径。
1.3MATLAB中的主要文件类型
在MATLAB系统中,根据功能可将MATLAB系统所使用的外部文件几类,并用不同的扩展名作为其标识,如下:
1.M文件:
M文件以字母m为扩展名。
如:
startup.m。
M文件是ASCII码文本文件,可以用任何文本编辑器进行编辑。
在MATLAB系统中,有两类M文件,即程序M文件和函数M文件。
程序M文件:
简称M文件,由符合MATLAB语法的语句构成。
函数M文件:
简称为函数,文件的第一行必须是以关键字function开始的函数说明语句。
它们的共同之处:
在MATLAB命令窗口中键入文件名,回车,可执行该M文件中所有语句规定的任务和功能;
它们的差别之处:
1)程序M文件中创建的变量都是MATLAB工作空间中的变量,工作空间中的其它程序和函数可以共享;而函数M文件创建的变量则一般为局限于函数运行空间内的局部变量;
2)函数M文件可以使用传递参数,在函数M文件的调用式中可以有输入参数和输出参数,而程序M文件则没有这种功能。
2.MAT文件:
是MATLAB系统的二进制数据文件,用于保存系统所使用的数据。
MAT文件按照MATLAB的基本数据结构---矩阵的方式来管理和记录数据,对每一个矩阵对象MAT文件记录了它的所有特征和各元素值,如它的变量名、维数、存储方式等。
3.MEX文件:
MEX文件是经过MATLAB编译系统编译的函数二进制文件,可以被直接调入MATLAB系统中运行。
一般的M文件的工作是边解释边执行,而MEX文件则不同,它不须解释可直接执行,因此速度较一般M文件快得多。
所以,用户通常把已经调试好,且比较大的M文件编译成MEX文件,供以后使用。
1.4MATLAB中的常用命令
1.查询变量信息的命令:
who和whos
可查询工作空间中有哪些变量。
who:
只简单地列出工作空间中的变量名字;
whos:
除变量名之外,还报告更详细的信息,与工作空间窗口显示类似。
形式:
who
2.装入与存储变量与数据的命令:
load和save
load:
一般用于将MATLAB格式的数据文件装入工作空间;形式为loadabc
save:
与load文件相对应,是将当前变量或某些指定变量存入MATLAB数据文件。
如工作空间中有一些变量,可用saveabc保存,存为数据文件abc.mat。
如果要保存指定的变量X、Y、Z,则可写为:
saveabcXYZ。
3.清除命令:
clc或clear
clc:
清除命令窗口的显示内容,但不清除工作空间。
clc
clear:
该命令用于清除工作空间中的全部或部分指定变量。
clear清除所有变量;
clearXYZ清除名为X、Y、Z的变量。
4.命令窗口数据显示格式命令:
format
format命令设置或改变数据的输出格式。
如显示:
x=[4/31.2345e-6]
formatshort:
短格式,该格式显示5位有效数字。
显示为:
1.33330.0000
formatshorte:
短格式e方式。
显示为:
1.3333e+001.2345e-06
formatlong:
长格式,显示15位有效数字。
显示为:
1.333333333333330.00000123450000
formatlonge:
长格式e方式。
显示为:
1.33333333333333e+001.2345000000000e-06
formathex:
16进制格式。
formatrat:
分数格式。
显示为:
4/31/810045
5.help命令:
在命令空间中输入help命令,可提供MATLAB的在线帮助。
help:
列出主要的帮助主题;
help帮助主题:
列出指定主题下的函数;
help函数名:
对所选函数的功能、调用格式及相关函数给出说明。
6.lookfor命令:
当需要查找具有某种功能的函数但却不知道该函数的准确名称时,可以用lookfor命令。
如:
lookforLyapunov
可列出与Lyapunov有关的所有函数。
7.which命令:
用于显示指定的外部函数(M文件)所在的目录,如指定的是内部函数,则系统会显示该函数是内部函数,而不显示目录。
如:
whichabc
则系统会显示文件abc所在的目录。
8.what命令:
列出指定目录下的M文件、MAT文件、MEX文件和Class。
如:
whatops
M-filesindirectoryD:
\MATLABR12\toolbox\matlab\ops
Contentsbitshiftldivideparensubsref
allbitxorleplustimes
andcolonltpowertranspose
anyctransposeminuspunctuminus
aritheqmldividerdivideunion
bitandgempowerrelopunique
bitcmpgtmrdividesetdiffuplus
bitgethorzcatmtimessetxorvertcat
bitmaxintersectneslashxor
bitorismembernotsubsasgn
bitsetkronorsubsindex
MEX-filesindirectoryD:
\MATLABR12\toolbox\matlab\ops
ismembc
ClassesindirectoryD:
\MATLABR12\toolbox\matlab\ops
cellopaque
第二节MATLAB语言的基本语句结构
MATLAB语言的规则十分简单,它是一种表达式语言,其语句类似于数学式子,非常容易掌握。
那么,怎样去写这些数学式子呢?
MATLAB也有它的规则。
2.1MATLAB的矩阵、变量与表达式
在MATLAB系统中,只管理着一种对象---矩阵(包括复数矩阵),任何数量在MATLAB中是作为1x1的矩阵来处理的。
一.矩阵的创建:
在MATLAB中创建矩阵的原则:
1)矩阵元素必须写在“[]”内;
2)矩阵的同一行之间用空格或“,”分隔;
3)矩阵的行与行之间用分号或回车符分隔;
4)矩阵的尺寸不必预先定义;
5)矩阵元素可以是数值、变量、表达式或函数。
在MATLAB中矩阵的创建有四种方法。
1.在命令窗口直接输入:
如输入:
A=[1,2,3;4,5,6;7,8,9]
A=
123
456
789
也可用空格代替逗号,用回车代替分号:
如上例:
A=[123
456
789]
则显示:
A=
123
456
789
2.由M文件创建矩阵:
当矩阵的尺寸较大时,可以按矩阵的输入方式编辑一个M文件(可用循环程序来做),在命令窗口直接执行该文件,即可将矩阵调入工作空间。
3.由函数创建矩阵:
对于一些特殊的矩阵,可以利用MATLAB的内部函数或用户自定义函数创建矩阵。
如diag()函数可生成对角阵。
4.通过数据文件创建矩阵:
可用load命令调入数据文件,创建新矩阵。
复数矩阵的表示:
在MATLAB中,复数的虚根单位用i,j表示,即:
z=3+4i或z=3+4j.
可用下面的语句输入复数矩阵:
》A=[12;34]+i*[56;78];或
》A=[1+5i2+6i;3+7i4+8i]
二.MATLAB的变量和表达式:
1.变量用变量名表示。
MATLAB变量名是由若干个字符构成的字符串,构成变量名的字符可以是字母、数字或下划线,但第一个字符必须是字母。
MATLAB6可分辨31个字符,超过31个则不认。
MATLAB中的变量是分辨大小写的,M和m是两个变量。
因MATLAB的变量采用统一的数据类型---矩阵,所以无须对变量的类型进行说明,当需要使用一个新变量时,只须直接对其赋值即可。
函数名可作为特殊的变量名看待,但要求是小写字母,如:
求矩阵A的逆inv(A),要是写为Inv(A)则会出现未定义的警告。
2.表达式则是由运算符、函数调用、变量名以及特殊字符组成的式子。
3.MATLAB中基本的赋值语句为:
》变量名=表达式------将表达式的结果赋给变量名(表达式的运算结果都是一个矩阵)。
等号右边的表达式可以由分号“;”结束,也可以由逗号“,”或换行号结束,但含义不同:
分号时,变量结果不显示;
逗号或换行号时,则将结果显示出来。
》表达式------计算表达式的值,将其值赋给MATLAB的永久变量ans。
注:
1)MATLAB中有几个不能被clear命令清除的变量,称永久变量。
(其他变量名最好不要与此同)。
它们是:
ans:
当不指明某一语句的计算结果赋给哪个变量时,系统自动将该计算结果赋给变量ans;
eps:
计算机能产生的绝对值最小的浮点数;
i,j:
虚数单位,即-1的平方根;
inf,Inf:
正无穷大;
nan,NaN:
非数,常产生于0/0等运算;
Pi:
圆周率。
2)如果表达式的值太复杂,一行写不下,可以加上三连点“…”回车,然后接下去再写。
如:
s=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8…
+1/9-1/10+1/11-1/12;
3)在MATLAB函数调用时,MATLAB还允许有这样的形式,如:
》[m,p]=bode(n,d,w);
4.字符串与字符串变量:
MATLAB可将字符串当作数组或矩阵处理。
在MATLAB中,字符串用单引号括起来,如:
》S=‘UseMatlab’
输出结果是:
S=
UseMatlab
字符串存储在行向量中,每个元素对应一个字符,向量的值为字符对应的ASCII码值。
2.2MATLAB的基本运算符
1.矩阵运算符:
A’---矩阵A的转置,如果A是复矩阵,则其运算结果是共轭转置;
A+B---矩阵的加运算,若A和B的维数相同,则会将A和B矩阵的相应元素相加;
A-B---矩阵的减运算,若A和B的维数相同,则会将A和B矩阵的相应元素相减;
A*B---矩阵相乘,A的列数与B的行数相等,即A和B矩阵维数相容,维数不相容是不可乘的。
如:
A---nxm,B---mxr,若C=A*B,则:
C---nxr。
B/A---方程X*A=B的解,即X=B*A-1。
称矩阵的右除。
A\B---方程A*X=B的解,即X=A-1*B。
称矩阵的左除。
矩阵的除法,其意义相当于矩阵的求逆运算。
左除与右除的关系为:
b/a=(a’\b’)’。
A^B---矩阵的乘方。
1)A为方阵,B为正整数时,表示矩阵A的B次乘积;
2)B为负整数时,表示矩阵A的逆阵的B次乘积;
3)B为非整数时,如B=n/m,则首先应该将A矩阵自乘n次,然后再对结果开m次方;
4)A、B均为矩阵时无意义。
A.*B---矩阵的点乘运算,表示A和B阵的对应元素直接相乘,A和B要有相同的维数。
点运算在MATLAB中起重要的作用,如X是一个向量,则求取X2时不能直接写成X*X,而必须写成X.*X。
A.\B,A./B---矩阵的点除运算,表示A和B阵的对应元素直接相除,A和B要有相同的维数。
A.^B---矩阵的点乘方,表示要对其元素逐一进行幂运算。
与点乘相似。
2.关系运算符:
MATLAB中提供了6种关系运算符,用于比较两个同维数的矩阵:
<小于
<=小于或等于
>大于
>=大于或等于
==等于
~=不等于
关系运算符可以用于检查矩阵的元素是否满足某些条件。
两个同维数的矩阵比较的结果是与它们同维数的0、1矩阵,1表示结果为真,0表示结果为假。
3.逻辑运算符:
在MATLAB中,逻辑运算符有3种。
&逻辑与。
当运算双方对应元素都为非零时;结果为1,否则,结果为0。
|逻辑或。
当运算双方对应元素有一个为非零时;结果为1,否
则,结果为0。
~逻辑非。
当元素的值为0时,结果为1,否则,结果为0。
例:
a=[103;0–16],b=[-100;050.3],计算两矩阵对应元素的逻辑关系。
>>a&b
ans=
100
011
>>a|b
ans=
101
011
>>~a
ans=
010
100
>>~b
ans=
011
100
4.特殊运算符:
在MATLAB中,有一些特殊的符号,具有特殊的意义。
1)在MATLAB的M文件中,可以加入解释行,解释行的标识符为:
“%”,该符号后面的内容将作为注释内容。
2)行分隔符:
“;”用在MATLAB语句后,用它时执行结果不显示,可避免显示一些不感兴趣的结果。
3)冒号运算符“:
”最主要的作用是生成向量。
如:
j:
k---生成向量[j,j+1,j+2,…,k]
j:
i:
k---生成向量[j,j+i,j+2i,j+3i,…,k](j为起始值,i为步距,k为终止值,在仿真中经常用于生成时间向量)
A(:
j)---矩阵A的第j列
A(i,:
)---矩阵A的第i行
A(j:
k)---生成向量A(A为向量时,为A的第j到第k个元素,当A为矩阵时,为A的按列数的第j到第k个元素)
例:
A=
123
456
789
>>A(2:
4)
ans=
472
A(:
j:
k)---矩阵A的从第j列到第k列的矩阵子块
A(:
[j,k])---矩阵A的第j列和第k列
例:
A=123
456
789
>>A(:
1:
2)
ans=
12
45
78
>>A(:
[1,3])
ans=
13
46
79
4)MATLAB中允许对一个矩阵的单个元素进行赋值,如:
A=123
456
789
当执行A(2,3)=100,则显示:
A=123
45100
789
注意:
矩阵中元素按列存储,上例中对矩阵元素操作也可这样调用
A(8)=8
对于一个矩阵中0元素很多,而非0元素很少的情况,可以先形成0矩阵,然后将非0元素输入。
如果给出的行数和列数大于原矩阵范围,则将自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为0。
如:
>>A(4,5)=8
A=
12300
45600
78900
00008
2.3MATLAB的常用函数
1.MATLAB通用函数:
包括数学函数和特殊函数。
数学函数有:
三角函数、指数函数、复数函数、取整和求余函数。
三角函数:
sin、cos、asin(反正弦)、acos(反余弦)、tan(正切)、atan(反正切)、cot(余切)、acot(反余切)等。
指数函数:
exp(以e为底的指数)、log(自然对数)、log10(以10为底的对数)、log2(以2为底的对数)、pow2(2的幂次)、sqrt(开平方)等。
复数函数:
abs(绝对值或复数的模)、angle(相位角)、complex(由实部和虚部构造复数)、conj(复数的共轭)、real(复数的实部)、imag(复数的虚部)等。
取整和求余函数:
fix(朝0方向取整)、floor(朝负无穷方向取整)、ceil(朝正无穷方向取整)、rem(除后取余数)、sign(符号函数)、round(四舍五入)到最近的整数)等。
特殊函数有:
特殊数学函数、数理函数、坐标变换。
2.矩阵和数组(向量)函数:
det(方阵的行列式)、inv(矩阵的逆)、norm(矩阵或矢量的范数)、normest(矩阵的2范数)、rank(矩阵的秩)、svd(矩阵的奇异值分解)、trace(矩阵的迹)、eig(矩阵的特征值和特征矢量)、expm(矩阵指数)、logm(矩阵对数)、sqrtm(矩阵平方根)等。
3.逻辑和关系函数:
all(x)检查x是否全为1(true)
any(x)检查x是否有不为0的元素
exist(x)检查变量的存在性和类别
find(x)找出非0元素的位置标识
isempty(x)检查是否为空矩阵
isinf(x)检查是否为无穷大
isglobal(x)检查是否为全局变量
issparse(x)检查是否为稀疏矩阵
isstr(x)检查是否为字符串
and(a,b)逻辑与
or(a,b)逻辑或
not(a)逻辑非
xor(a,b)逻辑异或
4.矩阵的特殊操作函数:
在计算机仿真的编程中,常常遇到一些特殊的矩阵,如零矩阵、单位阵、全1阵等等。
下面介绍有关的操作函数。
1)零矩阵zeros(n)nxn的零阵
zeros(n,m)n行m列的零阵
2)全1阵ones(n,m)n行m列的全1阵
3)单位阵eye(n)nxn的单位阵
4)随机阵randn(n,m)元素为正态分布随机阵
5)空矩阵x=[]将一个0x 0阶的空矩阵赋给变量x
MATLAB中定义了一个很特殊的矩阵,即空矩阵,它的作用是:
利用空矩阵的特性,可以进行从一个矩阵中消去部分行或列的运算。
如:
A(:
[2,4])=[]------其运算结果是从矩阵A中削去第2列和第4列的矩阵子块。
空矩阵的作用与MATLAB中清除变量命令clear是不相同的。
Clearx是从工作环境中清除变量x,清除后再引用变量x是非法的,而空矩阵仍可引用。
6)大矩阵的构造方法:
与数学运算一样,M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 MATLAB 语言 使用 程序设计 说明书