第一二章 MATLAB 入门.docx
《第一二章 MATLAB 入门.docx》由会员分享,可在线阅读,更多相关《第一二章 MATLAB 入门.docx(26页珍藏版)》请在冰豆网上搜索。
第一二章MATLAB入门
第一章MATLAB入门
Chapterone:
IntroductiontoMATLAB
Matlab(MatrixLaboratory)是美国MathWorks公司开发的一套高性能的数值分析和计算软件,用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境,是目前最好的科学计算类软件之一。
MATLAB将矩阵运算、数值分析、图形处理、编程技术结合在一起,为用户提供了一个强有力的科学及工程问题的分析计算和程序设计工具,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能,是具有全部语言功能和特征的新一代软件开发平台。
MATLAB已发展成为适合众多学科,多种工作平台、功能强大的大型软件。
在欧美等国家的高校,MATLAB已成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具。
成为攻读学位的本科、硕士、博士生必须掌握的基本技能。
在设计研究单位和工业开发部门,MATLAB被广泛的应用于研究和解决各种具体问题。
在中国,MATLAB也已日益受到重视,短时间内就将盛行起来,因为无论哪个学科或工程领域都可以从MATLAB中找到合适的功能。
一.MATLAB的重要功能和主要组成部分
一)功能:
目前MATLAB产品族的主要功能为:
-数值分析
-数值和符号计算
-工程与科学绘图
-控制系统的设计与仿真
-数字图像处理
-数字信号处理
-通讯系统设计与仿真
-财务与金融工程...
三.MATLAB的系统开发环境(SystemDevelopingEnvironment)
1.操作桌面(OperatingDesktop)
(1)桌面布局:
6个窗口(图示、操作演示)
*命令窗口(CommandWindow)
*工作空间窗口(Workspace)
*当前目录浏览器(CurrentDirectory)
*命令历史窗口(CommandHistory)
*启动平台(LaunchPad)6.x版
*帮助窗口(Help)
*M文件优化器(Profiler)
窗口的切换、放大与关闭。
(switching,Amplification,tun-off)
View菜单中的desktoplayout菜单中提供的6种可选布局:
*Default
*CommandWindow
*Simple
*ShortHistory
*TallHistory
*FivePanel
(2).菜单和工具栏;(Menuandtoolbar)操作桌面上有6个菜单(表1—3)和带有9个快捷按钮的工具栏组,(图示、操作演示)
(3).改变桌面设置:
(Setting)File菜单中Preference对话框中设置(图示、操作演示)
2.命令窗口:
(Commandwindow)MATLAB的主要交互窗口。
用于输入MATLAB命令、函数、数组、表达式等信息,并显示图形以外的所有计算结果。
例如从键盘输入矩阵
A=[123;456;789]按Enter键后屏幕立即显示结果
A=
123
456
789
命令窗口可作为一个多功能高级计算器,如要计算18+(5sinπ/6)/2+cosπ/6只须按MATLAB格式要求键入;
18+5*sin(pi/6)/(2+cos(pi/6)),然后按Enter键既可在窗口内显示出计算结果:
ans=
18.8723
公式中的数据可任意改动并重新计算。
(例)
3.工作空间窗口:
(WorkspaceWindow)
用于储存各种变量和结果的空间,显示变量的名称、大小、字节数及数据类型,对变量进行观察、编辑、保存和删除。
(图示、操作演示)。
临时变量不占空间,
为了对变量的内容进行观察、编辑与修改,可以用三种方法打开内存数组编辑器。
*双击变量名;*选择该窗口工具栏上的打开图标;*鼠标指向变量名,点击鼠标右键,弹出选择菜单,然后选项操作。
(示例)
欲查看工作空间的情况,可以在命令窗口键入命令whos(显示存在工作空间全部变量的名称、大小、数据类型等信息)或命令who(只显示变量名)
4.当前目录浏览器:
(CurrentDirectory)
用于显示及设置当前工作目录,同时显示当前工作目录下的文件名、文件类型及目录的修改时间等信息。
只有在当前目录或搜索路径下的文件及函数可以被运行或调用。
(图示、操作演示)
设置当前目录可以在浏览器窗口左上角的输入栏中直接输入,或点击浏览器下拉按钮进行选择。
还可用cd命令在命令窗口设置当前目录,如:
cdc:
\mydir可将c盘上的mydir目录设为当前工作目录。
(5).命令历史窗口:
(CommandHistory)
记录已运行过的MATLAB命令历史,包括已运行过的命令、函数、表达式等信息,可进行命令历史的查找、检查等工作,也可以在该窗口中进行命令复制与重运行。
(图示、操作演示)
6.启动平台:
(LaunchPad)
帮助用户方便地打开和调用MATLAB的各种程序、函数和帮助文件。
平台列出了系统中安装的所有的MATLAB产品的目录,可以通过双击来启动相应的选项。
7.0版取消了这个窗口,事实上Help工具完全具备它的功能。
(图示、操作演示)
9.帮助浏览器:
(HelpBrowser)
(1)帮助浏览器:
提供方便快捷的帮助信息获取途径和图文并茂的帮助内容,MATLAB7.0是通过勾选Desktop菜单中的Help选项打开一个独立的交互式帮助浏览器。
(2)help命令:
在命令窗口输入help命令,也是MATLAB寻找在线帮助的一种方便而快捷的方式。
(图示、操作演示)
例1.help(列出主要的帮助主题)
HELPtopics:
matlab\general-Generalpurposecommands.
matlab\ops-Operatorsandspecialcharacters.
matlab\lang-Programminglanguageconstructs.
matlab\elmat-Elementarymatricesandmatrixmanipulation.
matlab\elfun-Elementarymathfunctions.
matlab\specfun-Specializedmathfunctions.
matlab\matfun-Matrixfunctions-numericallinearalgebra.
matlab\datafun-DataanalysisandFouriertransforms.
matlab\audio-Audiosupport.
matlab\polyfun-Interpolationandpolynomials.
matlab\funfun-FunctionfunctionsandODEsolvers.
matlab\sparfun-Sparsematrices.
matlab\graph2d-Twodimensionalgraphs.
matlab\graph3d-Threedimensionalgraphs.
matlab\specgraph-Specializedgraphs….
例2.helpexp(列出指定主题下的函数说明)
EXPExponential.
EXP(X)istheexponentialoftheelementsofX,etotheX.
ForcomplexZ=X+i*Y,EXP(Z)=EXP(X)*(COS(Y)+i*SIN(Y)).
SeealsoLOG,LOG10,EXPM,EXPINT.
Overloadedmethods
helpsym/exp.m
helpfints/exp.m
helpdemtseries/exp.m
(3)lookfor命令:
(lookforcommend)可以根据用户提供的完整或不完整的关键词,搜索出一组与之相关的命令或函数。
(图示、操作演示)
例:
lookforintegral
(4)模糊查询:
(fuzzyInquiry)用户只须输入命令的前几个字母,然后键入Tab键MATLAB就会列出所有以这个字母开始的命令。
(图示、操作演示)
例:
在命令窗口键入plot然后按Tab键,可得各种以plot为字头的命令:
plotplotbrplotesplotmapplotperfplottr
plot3plotcharplotfaplotmatrixplotpvplotv
plot3mploteachplotfisplotmfplotscaleplotvecplotallploteditplotfrspplotnicplotsmplotyyplotbintreeplotepplotlrplotnyqplotsom
plotbodeploterrplotmplotpcplotstep
四.MATLAB的基本操作
1.简单矩阵的建立(matrixsetting)
MATLAB以矩阵为基本运算对象,标量可看作1×1的矩阵,矢量看作n×1或1×n的矩阵。
输入方式:
(InputMode)
(1)以直接列出元素的形式输入:
(simplyinitializingmatricesbythemethodtoexplicitlyliststhevalues)把矩阵元素直接排列到方括号[]中,每行内的元素用逗号或空格分开,行与行之间用分号隔开。
例:
a=[123;246;835]或a=[1,2,3;2,4,6;8,3,5]
大矩阵可分行输入:
a=[123
246
835]
(2).通过语句和函数产生:
(CreatinganewmatrixfromaexistingmatrixthrowMATLABlanguageorfunctions)对于已经存在的矩阵,可用函数或表达式产生新的矩阵。
例如:
矩阵a和x已存在,利用y=sin(x)和c=a+0.1*(1+a/2)命令将产生新矩阵y和c。
利用内部语句和函数可以快速产生一些特别有用的工具矩阵,如全0阵,全1阵,单位阵,随机阵等。
(3).在m文件中创建矩阵:
(CreatingamatrixwithintheMfile)通过建立MATLAB的M文件可完成矩阵的输入,如建立B.m的文件,内容为:
B=[342;135;643]
或B=[342
135
643]
则在命令窗口中使用B命令语句可以调用B矩阵。
(4)从外部的数据文件中装入:
(ReadtheMatrixfromexternaldatafile)利用load或fread命令可以读取MATLAB早期版本产生的矩阵,也可读取有其他应用程序产生的数据(或矩阵)。
2.矩阵元素(Elementofmatrix:
Anykindofexpressioncanbeusedasamatrixelement)
可以用任何形式的表达式来充当矩阵元素,如:
x=[-1.3sqrt(3)(1+2+3)*4/5]
将得到矩阵:
x=
-1.30001.73214.8000
可以定义或修改矩阵中某一元素,如操作:
x(5)=abs(x
(1))得一个新矩阵
x=
-1.30001.73214.800001.3000
可以用小矩阵构成大矩阵,如:
a=[123;456;789];
c=[a;[10,11,12]]结果为:
c=
123
456
789
101112
或r=[101112];
c=[a;r]
可得同样矩阵c=
123
456
789
101112
可使用”:
”(colon)从大矩阵中抽取小矩阵,(withdrawasmallmatrixfromabigmatrix)如:
d=c(1:
3,:
)意为抽取一到三行的各列,结果为:
d=
123
456
789
e=c(:
1:
2)意为抽取一到二列的各行,结果为:
12
45
78
1011
3.语句与变量(Statementandvariable)
MATLAB语句的常用格式:
变量=表达式(;)(variable=expression(;))或简化为:
表达式(;)
表达式可以由运算符(Operator)、特殊字符(specialcharacter)、函数名(functionname)、变量名(variablename)等组成,表达式的结果为一矩阵,它赋给左边的变量。
如省略变量名和“=”,则自动产生一个名为ans的变量,如:
1900/81结果为:
ans=
23.4568
并显示在屏幕上,如语句以分号结束,则结果不显示,如:
p=a*a;
只完成运算,但不显示结果。
表达式较长时可利用续行符“...”,如:
s=1-1/2+1/3-1/4+1/5-1/6+1/7-...
1/8+1/9-1/10+1/11-1/12;
计算结果为:
0.6532
注:
续行号前不应是数字,数字后应为运算符、空格或加一个点号。
4.复数和复数矩阵(Complexandcomplexmatrix)
复数用特殊字符i或j表示。
i=sqrt(-1),其值在工作空间显示为0+1.0000i.
例:
输入z=3+4i或z=3+4j结果一样。
MATLAB中复数有下面的语句生成办法:
z=a+b*i或z=r*exp(i*θ)其中r为复数的模,θ为复数辐角的弧度数。
复数的两种输入方法:
(1)a=[12;34]+i*[56;78]
(2)a=[1+5i2+6i;3+7i4+8i]
结果相同:
a=
1.0000+5.0000i2.0000+6.0000i
3.0000+7.0000i4.0000+8.0000i
注:
(1)当复数的虚部(image)为一个确定的数(而不是变量或矩阵)时,可省略“*”,如1+2*i可写成1+2i,但a+b*i不能写成a+bi,[12]+[34]*i不能写成[12]+[34]i
(2)当复数作为矩阵元素时,复数内不能留有空格,如1+5i,MATLAB中任何矩阵的元素内部都不能留有空格,否则会被当作两个元素处理而出错。
5.永久变量:
(permanentvariable)系统本身在启动时定义的变量,驻留在工作空间中,它们是:
ans:
(storesexpressionvalue)系统默认的变量名
eps:
(representsfloating-pointprecision)容差变量,定义为0到最近浮点数的距离。
在PC机上等于2-52,即精确到2.22×10-16;
pi:
(representsthevalueπ)圆周率的近似值3.141565358979
Inf或inf:
(representsthevalue∞)正无穷大,定义为(1/0)
NaN:
(representsthevalueNot-a-Number)非数(Notanumber),Inf/Inf或0/0运算产生,表示不定值。
i,j:
虚数单位,定义i=-11/2,j=-11/2
6.数和算术表达式(Numberandarithmeticexpression)
MATLAB采用10进制惯例,表示10的幂次用符号e或E:
3-990.0019.4561.3e-34.5E21
数值的相对精度是eps,即大约保持16位有效数字。
MATLAB的算数运算符号(ArithmeticOperator):
+加addition,-减subtraction,*乘multiplication,
\左除leftdivision,/右除rightdivision,^幂exponentiation
对于标量,两种除法运算的结果相同,对于矩阵两种除法表示两种不同的除数矩阵和被除数矩阵的关系。
第二章MATLAB的基本数学功能
Chaptertwo:
fundamentalMathfunctionofMATLAB
.
一.算术运算(ArithmeticComputation)
MATLAB提供的两种运算方式:
(1)普通的数组运算方式:
(Arraycomputation)在数组中对应元素之间进行运算;
(2)矩阵运算方式:
(matrixcomputations)将标量当作1×1阶矩阵,一维数组当作一行或一列的矢量(即1×n阶或n×1阶的矩阵),二维数组当作m×n阶矩阵,然后按照矩阵的运算规则进行运算。
*二者输入形式和书写方法相同,差别仅在于使用不同的运算符号,执行不同的计算过程,数组的运算是对应元素之间的运算,而矩阵运算是根据矩阵的运算规则进行。
1.加、减运算(additionandsubtraction)
矩阵与数组的加减运算没有区别,运算符均为“+”、“-”,运算方法相同,但两个运算对象必须是同阶矩阵,否则将给出错误信息。
如下例:
a=[123;456;789];
b=[135];
a+b
运行结果给出错误信息:
?
?
?
Errorusing==>±
Matrixdimensionsmustagree.
但标量,即1×1阶矩阵可以和其他不同维数的矩阵进行加减运算,如:
a+5
ans=
678
91011
121214
2.乘除运算(Multiplicationanddivision)
矩阵在进行乘除运算时与通常的运算符号相同(*,/,\),而数组在进行乘除运算时要在通常的符号前加“.”,如:
“.*”和“./”(或“.\”)
(1)矩阵乘法:
(Matrixmultiplication)
条件:
两矩阵中前一矩阵的列数与后一矩阵的行数相同,如
x=[12;34];
y=[56;78];
x*y
ans=
1922
4350
也可以实现两个相同维数矢量的内积(点乘,dotproduct),如:
a=[-102]’%(输入行矢量转置为列矢量,等同于a=[-1;0;2])
b=[-2-11]’
a’*b
b’*a
a=-1
0
2
b=
-2
-1
1
ans=4
ans=4
MATLAB计算点乘(dotproduct)和叉乘(crossproduct)有专门的命令,用dot(a,b)计算矢量a和b的点乘,用cross(a,b)计算叉乘。
矩阵可以和标量相乘,标量可以是乘数也可以是被乘数,都是将矩阵中的每一个元素与标量相乘。
如:
x=[-102];
pi*x
ans=
-3.141606.2832
(2)数组的乘法(Arraymultiplication)
条件:
a,b两数组必须有相同的维数,则a.*b表示a和b中对应元素之间相乘,即z(i,j)=x(i,j)*y(i,j).如:
x=[123];
y=[456];
z=x.*y
z=
41018
(3)矩阵除法(Matrixdivision)
条件:
a矩阵是非奇异方阵,则a\b(左除)和b/a(右除)都可以实现。
a\b等效于a矩阵的逆左乘b矩阵,即a\b=inv(a)*b,b/a等效于a矩阵的逆右乘b矩阵,即b/a=b*inv(a).
通常x=a\b是a*x=b的解,x=b/a是x*a=b的解。
一般a\b≠b/a,
右除与左除的关系为:
(b/a)’=(a’\b’),如;
a=rand(3)
b=rand(3)
c=a\b
d=b/a
w=(b/a)'
t=a'\b'
a=
0.60380.01530.9318
0.27220.74680.4660
0.19880.44510.4186
b=
0.84620.67210.6813
0.52520.83810.3795
0.20260.01960.8318
c=
4.342010.5808-9.1715
0.31281.1052-0.3169
-1.9105-6.15296.6792
d=
1.48645.5604-7.8702
0.71624.5085-5.7059
-0.0482-3.62736.1317
w=
1.48640.7162-0.0482
5.56044.5085-3.6273
-7.8702-5.70596.1317
t=
1.48640.7162-0.0482
5.56044.5085-3.6273
-7.8702-5.70596.1317
(4)数组的除法(Arraydivision)
条件:
a与b必须具有相同的维数。
符号“.\”或“./”,运算结果相同,a.\b表示b中的元素分别除以a中的对应元素,即z(i,j)=x(i,j)\y(i,j)=y(i,j)/x(i,j)。
如:
x=[123];
y=[456];
z=x.\y
z=
4.00002.50002.0000
3.乘方(Power)
(1)矩阵的乘方(Matrixpower)
条件:
在a^p中a,p不可都是矩阵,必须一个是标量,一个是方阵。
a^p意思是a的p次方。
*A是一个方阵,p是一个标量,且p是大于1的整数,则a的p次幂即为a自乘p次。
*如p是不为整数的标量时,a^p=V*D.^p/V其中D为矩阵a的特征值矩阵,V为对应的特征矢量阵,可用eig函数求出D和V,[V,D]=eig(a).
*当p是方阵而a是标量时,a^p=V*a.^D/V,其中[V,D]=eig(p).
(2)数组的乘方(Arraypower)符号“.^”
条件:
在底与指数均为数组的情况下,要求他们的维数必须相同。
*当底和指数为同样大小的数组时,x.^y为对应的元素做乘方运算。
如:
x=[123];
y=[456];
z=x.^y
z=
132729
这时执行的实际运算为:
z=x.^y=[123].^[456]=[1^42^53^6]=[132729]
*若指数是标量,执行的运算是底的每一个元