MATLAB讲义.docx
- 文档编号:29929370
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:179
- 大小:172.40KB
MATLAB讲义.docx
《MATLAB讲义.docx》由会员分享,可在线阅读,更多相关《MATLAB讲义.docx(179页珍藏版)》请在冰豆网上搜索。
MATLAB讲义
MATLAB讲义
第一章MATLAB系统概述
1.1MATLAB系统概述
MATLAB(MATrixLABoratory)矩阵实验室的缩写,全部用C语言编写。
特点:
(1)以复数矩阵作为基本编程单元,矩阵运算如同其它高级语言中的语言变量操作一样方便,而且矩阵无需定义即可采用。
(2)语句书写简单。
(3)语句功能强大。
(4)有丰富的图形功能。
如plot,plot3语句等。
(5)提供了许多面向应用问题求解的工具箱函数。
目前,有20多个工具箱函数,如信号处理、图像处理、控制系统、系统识别、最优化、神经网络的模糊系统等。
(6)易扩充。
1.2MATLAB系统组成
(1)MATLAB语言
MATLAB语言是高级的矩阵、矢量语言,具有控制流向语句、函数、数据结构、输入输出等功能。
同时MATLAB又具有面向对象编程特色。
MATLAB语言包括运算符和特殊字符、编程语言结构、字符串、文件输入/输出、时间和日期、数据类型和结构等部分。
(2)开发环境
MATLAB开发环境有一系列的工具和功能体,其中大部分具有图形用户界面,包括MATLAB桌面、命令窗口、命令历史窗口、帮助游览器、工作空间、文件和搜索路径等。
(3)图形处理
图形处理包括二维、三维数据可视化,图像处理、模拟、图形表示等图形命令。
还包括低级的图形命令,供用户自由制作、控制图形特性之用。
(4)数学函数库
有求和、正弦、余弦等基本函数到矩阵求逆、求矩阵特征值和特征矢量等。
MATLAB数学函数库可分为基本矩阵和操作、基本数学函数、特殊化数学函数、线性矩阵函数、数学分析和付里叶变换、多项式和二重函数等。
(5)MATLAB应用程序接口(API)
MATLAB程序可以和C/C++语言及FORTRAN程序结合起来,可将以前编写的C/C++、FORTRAN语言程序移植到MATLAB中。
1.3MATLAB的应用范围包括:
MATLAB的典型应用包括:
●数学计算
●算法开发
●建模、仿真和演算
●数据分析和可视化
●科学与工程绘图
●应用开发(包括建立图形用户界面)
以矩阵为基本对象
第二章Matlab基础
2.1MATLAB快速入门
(1)搜索路径
搜索路径也被看作是MATLAB的路径,其包含的文件被认为在路径上。
搜索路径设置存放在文件pathdef.m中,称为当前目录,当要在MATLAB中打开一个文件时,就以当前目录为开始点。
当输入一变量value时,MATLAB的搜索路径次序:
value是否为变量
value是否为内部函数
当前目录中是否存在value.m文件
搜索路径上是否存在value.m文件
path函数可以控制MATLAB的目录搜索路径,主要使用的格式:
path显示当前的搜索路径
p=path把当前的搜索路径存到字符变量P中
path('newpath')设置路径为'newpath'
path(path,'newpath')向当前路径添加一个新目录
addpath函数向MATLAB的搜索目录中添加一个新目录。
addpath路径名
path(path,’路径名’):
增加搜索路径
rmpath函数从MATLAB的搜索路径删除一个目录。
rmpath路径名:
删除路径
还可以利用菜单:
File->setpath(路径浏览器)
what:
显示出搜索路径上的文件名
what路径名:
路径名中的文件名
typevalue:
显示变量内容
edit文件名:
对m文件进行编辑
(2)工作空间(Workspace)
工作空间是一个重要而且比较抽象的概念,它是指运行MATLAB程序或命令所生成和存储在内存中的所有变量和MATLAB提供的常量构成的集合。
通过使用函数、运行M文件和装载保存的工作空间,可以向工作空间增加变量。
●save保存整个工作空间或一部分变量,使用方式:
saveworkspaceas文件名
或
save文件名[变量名]
●load恢复工作空间,使用方式:
loadworkspace
load文件名
●工作空间浏览器:
File->ShowWorkspace
●还有一组命令来管理这些变量。
who,whos:
显示出工作空间中的变量列表。
clear[变量名]:
清除变量
(3)MATLAB命令窗口
●输入命令和输出结果。
如输入:
help[函数名]
a=6
2.2矩阵、变量、运算和表达式
(1)矩阵的输入
A.直接输入:
注意:
(1)行元素间用空格或逗号(,)隔开;
(2)行与行之间用分号(;)或回车;
(3)整个元素列表用[]括起。
直接输入的矩阵为一全局变量,一直保存在内存中。
例:
a=[123;456]
a=
123
456
a=[1,2,3;4,5,6;7,8,9]⇔a=[123;456;789]
矩阵元素:
可以灵活地描述矩阵元素,
●矩阵元素a[i,j]按列存放
通过下标单独对元素赋值
例:
a(1,1)=1,a(3,2)=a(1,1)得到
a=
1
a=
10
00
01
即自动形成一个3行2列矩阵,对未赋值的元素充值0。
●矩阵的元素可以用任意形式的表达式
例:
算术表达式
x=[-1,sqrt(5),(2+7)^4]
x=
1.0e+003*
-0.00100.00226.5610
●大矩阵可以用小矩阵作为元素
例:
a=[12;34]
b=[aa+5;a-5zeros(size(a))]
例:
A=[1,2,3;4,5,6]
A=
123
456
B=[A;7,8,9]
B=
123
456
789
●可以从矩阵中抽取某些元素构成新矩阵
C=A(1:
2,:
)
C=
123
456
例:
a=[3,4,5;6,7,8]
b=[+2,4*5,6]
c=[sin(0.5*pi),sqrt(4),0]
d=[a;b;c]
●复数的表示
MATLAB支持复数的运算,复数的虚部用i或j表示。
例:
a=1+2i或a=1+2j二者表示的结果一样。
复数可以直接运算,
例:
a=3+4i;
b=5+6j
a+b
输出:
ans=
8.0000+10.0000i
复数运算的一些常用函数:
①abs返回复数的模
②angle返回复数的相角
③conj返回共轭复数
④imag返回复数的实部
⑤real返回复数的虚部
B.用语句或函数产生:
a=randn(5,5)产生正态分布5*5的随机矩阵。
C.用M-文件或外部数据文件产生:
M-文件是一个以.m为后缀的文本文件,文件内容为一系列MATLAB命令,在MATLAB环境下键入该文件名(不包括后缀),文件中的全部命令会依次逐个执行;M-文件名(不包括后缀)相当于一个宏命令.
例如:
一个名为magik.m的文件包含了如下的内容,(假设magik.m在当前目录下)
A=[
16.03.02.013.0
5.010.011.08.0
9.06.07.012.0
4.015.014.01.0]
在Matlab环境下执行如下命令:
magik
A
A=
163213
510118
96712
415141
D.用矩阵编辑器创建和修改矩阵:
使用File->Showworkspace
(2)矩阵运算
运算符+,-,*,/(右除),\(左除)和^(幂)。
右除:
C=A/B即C满足CB=A,当B可逆时,A/B=AB-1
左除:
C=A\B即C满足AC=B,当A可逆时,A\B=A-1B
幂A^n=A*…*A;A必须是方阵。
例:
矩阵的加减法:
a=[1:
3;4:
6;7:
9]
b=a;c=a+b;c=a-b
注:
矩阵相加减必须有相同的维数。
例:
矩阵的点乘运算,^运算时矩阵必须为方阵,且只能与数字运算。
d=a*b必须符合m*n与n*l的结构。
d=a.*b矩阵的点乘运算
例:
\(左除):
A\B=inv(A)*B,其中inv(A)表示A逆阵,例如求解AX=B。
A=[100;040;009];
B=[123;010;011];
X=A\B
/(右除):
A/B=A*inv(B),例如求解XA=B。
X=B/A
(3)变量与表达式
●Matlab的赋值语句有两种形式:
其一为:
<变量>=表达式;
其二为:
表达式,将表达式的值赋于一个自动定义的变量ans。
注:
A:
如果以;结尾,则不显示计算结果,否则显示计算结果。
B:
除保留字外,变量可以用字母开头,后跟19个字母或数字。
变量名区分大小写,变量使用时不需要先定义,也不必定义变量的类型。
●可以用who或whos来显示已定义的变量
例如:
who
Yourvariablesare:
ABCaans
whos
NameSizeBytesClass
A2x348doublearray
B3x372doublearray
C2x348doublearray
a3x248doublearray
ans1x18doublearray
Grandtotalis28elementsusing224bytes
●一些常用的变量
pi3.14159265//π值
isqrt(-1)//虚数单位
jsameasi
epsfloating-pointrelativeprecision,2.2204e-016//容量变量
realminsmallestfloating-pointnumber,2.2251e-308//最小浮点数
realmaxlargestfloating-pointnumber,1.7977e+308//最大浮点数
infinfinity(任意一个非零数除以0)//正无穷大
nanNot-a-number(0/0或inf-inf)//非数
如:
r=1/0
r=inf
1/r
ans=0
(4)矩阵的其他简单运算:
A’:
矩阵转置
inv(A):
A-1
sum(A):
得到一个行向量,其元素为A的每一列的和
a=[123;456]
sum(a)sum(a’)
diag(A):
得到一个列向量,其元素为A的对角元
sum(diag(a))
冒号(:
)运算符:
a:
b:
c:
生成一个由等差数列构成的行向量X,X(i+1)-X(i)=b
例:
0:
pi/4:
pi
ans=
00.78541.57082.35623.1416
如果省略b,则等差数列的公差为1
a=0:
0.05:
1
x=linspace(0,1,75)
a=1:
4;b=1:
2:
7;c=[b,a]
等比数列:
logspace(0,2,11)创建起点为10,终点为102,11个元素,公比为100.2
矩阵的变换:
rot90:
矩阵逆时针旋转n*90度。
fliplr:
矩阵左右翻转。
flipud:
矩阵上下翻转。
稀疏矩阵的存储:
sparse(A):
用于把完全矩阵压缩为稀疏矩阵。
A=[0,1,0,0;0,3,0,4;5,0,0,0;0,0,0,7]
sparse(A)
ans=
(3,1)5
(1,2)1
(2,2)3
(2,4)4
(4,4)7
sparse(i,j,u):
函数直接造成稀疏矩阵,i,j为向量分别对应行号和列号,u也为向量,存储非元素的值.
i=[1,2,2,3,4]
j=[2,2,4,1,4]
u=[1,3,4,5,7]
A=sparse(i,j,u)
full函数把稀疏矩阵还原为完全矩阵。
(5)数组及其运算:
数组可以看作是行向量,实质为阵列运算。
是元素对元素的运算,用句号(.)来区别。
数组和矩阵之间的区别在于运算规则不同,矩阵运算由线性代数规则来定义。
运算符:
+,-和.*,./,.\,.^
A.*B:
A与B对应的元素相乘
A.\B:
B的元素除以A的相应元素
A./B:
A的元素除以B的相应元素
A.^B:
A的元素为底,B的相应元素为幂的数组
如:
a=[1:
3;4:
6;7:
9]
b=a;c=a+b;c=a-b
查看下列运算的结果:
a*ba.*ba/ba./ba\ba.\ba^b(指数和底数均为矩阵,无法求解)a.^ba’a.’
2.3基本数学函数
abs(绝对值或复数模)
sqrt(平方根)
real(复数的实部)
imag(复数的虚部)
conj(复数的共轭)
round(舍入为最接近的整数)//round(-0.5)=-1round(0.4)=0
fix(向0方向舍入为整数)//fix(0.99)=0fix(1.01)=1
floor(向负无穷大舍入为整数)//floor(-0.5)=-1floor(0.5)=0
ceil(向正无穷大舍入为整数)//ceil(-0.5)=0ceil(0.6)=1
sign(符号函数)
rem(x,y)(取余数函数)//得到x/y的余数,rem(11,4)=3
sincostanasinatan//三角函数都是面向阵列中的元素操作,角度单位均为弦度。
atan2(y,x)//-pi<=atan2(y,x)<=pi
sinh(双曲正弦)coshtanh
exp(以e为底的指数)
log(自然对数)
log10(常用对数)
bessel(贝塞尔函数)
gamma(伽码函数)
rat(无理数的分式有理逼近)[N,D]=rat(x,tol),要求:
abs(x-N/D)<=tol*abs(x),tol的缺省值为tol=1.e-6*norm(X(:
),1)其中:
norm(X(:
),1)=max(sum(abs((X))))
2.4关于矩阵的一些有用的工具
产生矩阵的工具:
●‘[]’表示空矩阵
空矩阵不包含任何元素,它的维数为0*0;空矩阵可以在运算中传递。
例:
A=[1,2,3;4,5,6;7,8,9]
A(2,:
)=[]
输出:
A=
123
789
空矩阵有矩阵缩维的作用。
●eye:
单位矩阵:
对角线元素为1。
A=eye(3,3)
A=
100
010
001
●zeros:
所有的元素都是0
Z=zeros(2,4)
Z=
0000
0000
●ones:
所有的元素都是1
Z=5*ones(3,3)
Z=
555
555
555
●rand:
矩阵元素是用均匀分布在[0.0,1.0]内产生的随机数
●rand(n):
产生一个n阶(0-1)的随机矩阵
Z=rand(3)
Z=
0.10940.65990.1785
0.98880.35140.3573
0.58600.84950.5347
rand(m,n):
产生一个m*n阶(0-1)的随机矩阵
Z=rand(1,6)
Z=
0.59760.46280.76780.59020.39690.1927
产生[-a,a]之间均匀分布的随机数的公式:
R=a-2*a*rand(m,n)
●randn:
矩阵元素是用期望为0,方差为1的正态分布产生的随机数
Z=randn(3)
Z=
-0.43260.28771.1892
-1.6656-1.1465-0.0376
0.12531.19090.3273
产生均值为b,方差为q2的正态分布随机数的公式:
S=q*randn(m,n)+b
●其它特殊矩阵:
例:
a=[123;456;789]
1.diag(a)%%生成矩阵a的对角矩阵
ans=
1
5
9
2.compan:
伴随矩阵
例:
u=[10-76]
A=compan(u)
A=
07-6
100
010
eig(compan(u))
ans=
-3.0000
2.0000
1.0000
即方程的根。
3.magic:
魔方矩阵(矩阵的元素由1~10组成,行、列和对角线之和相等)
例:
magic(5)
ans=
17241815
23571416
46132022
101219213
11182529
4.tril(a)%%生成矩阵a的下三角矩阵
ans=
100
450
789
5.triu(a)%%生成矩阵a的上三角矩阵
ans=
123
056
009
注:
1.下标引用:
在Matlab中,矩阵元素的引用可用两个下标来表示,如矩阵A中,第i行第j列的元素用A(i,j)引用,也可以用一个下标来表示,用单个下标表示元素并不只限于矢量。
对于矩阵,由于Matlab的运算基本上都是对列操作的,矩阵可以认为是按列优先排列的一个长的列矢量,从而可用单下标引用。
例如2*2的矩阵,A
(1)表示第一列的第一个元素,A
(2)表示第一列的第二个元素,A(3)表示第二列的第一个元素,A(4)表示第二列的第二个元素,当矩阵的下标超出矩阵的实际元素的下标时,将给出错误信息。
但是,当某个值被赋给矩阵的一个新的元素时,Matlab会自动增加矩阵的维数大小。
例如4*4的矩阵A,执行命令A(4,5)=17后,矩阵A将变成4*5的矩阵。
在下标的表达式里使用冒号表示矩阵的一部分。
例如矩阵A(1:
k,j)表示矩阵A的第j列的前k个元素。
例如sum(a(1:
4,4)),表示计算第四列的前四个元素元素的和。
A(:
j)表示矩阵A的第j列的所有元素。
由于有了冒号运算符,例如求矩阵A的第j列元素之和,表示式为sum(A(:
j)。
2.如何建立多维矩阵:
在科学研究与工程运算中,要建立多维矩阵,方法之一是扩展二维矩阵。
例:
先建立一个简单的二维矩阵:
a=[578;019;436]
为a矩阵扩展第三维
a(:
:
2)=[104;356;987]
方法之二,使用cat函数。
它将现有的矩阵按照指定的维数建立新的多维矩阵。
B=cat(dim,A1,A2,...)
例:
b=cat(3,[28;05],[13;79])
2.5复杂的矩阵运算
一些矩阵运算:
size(A):
得到矩阵的阶,得到矩阵的n行m列.
rank(A):
得到矩阵的秩
det(A):
行列式
eig(A):
特征值和特征向量
e=eig(A)得到特征值
[v,d]=eig(A):
A*v=v*d
svd(A):
矩阵的奇异值分解[u,s,v]=svd(A),u,v正交阵,s对角阵,A=usv’
cond(A):
得到矩阵的条件数(最大奇异值和最小奇异值的比值)
lu(A):
LU分解(A必须是一个方阵)
[l,u]=lu(A):
u上三角阵,l:
一个下三角阵和一个置换矩阵的积
[l,u,p]=lu(A):
u上三角阵,l:
下三角阵,p:
置换矩阵
qr(A):
QR分解
[q,r]=qr(A):
r:
上三角阵,q:
正交阵
2.6矩阵输出格式
格式命令(数字)
X=[4/31.2345e-6];
formatshort:
以定点数形式显示,小数后面保留4位有效数字
X
X=
1.33330.0000
formatshorte:
以浮点数形式显示,小数后面保留4位有效数字
X
X=
1.3333e+0001.2345e-006
formatshortg:
以定点数或浮点数的最佳形式显示,小数后面保留4位有效数字
X
X=
1.33331.2345e-006
formatlong:
以定点数形式显示,小数后面保留14位有效数字
X
X=
1.333333333333330.00000123450000
formatlonge以浮点数形式显示,小数后面保留14位有效数字
X
X=
1.333333333333333e+0001.234500000000000e-006
formatlongg以定点数或浮点数的最佳形式显示,小数后面保留14位有效数字
X
X=
1.333333333333331.2345e-006
formatbank以货币方式显示
X
X=
1.330.00
formatrat用有理数近似表示
X
X=
4/31/810045
formathex用16进制表示
X
X=
3ff55555555555553eb4b6231abfd271
formatcompact以紧凑形式显示(formatloose以松散形式显示)
X
X=
3ff55555555555553eb4b6231abfd271
长命令行用“…”来表示连接
第三章图形
在分析问题的结果的时候,图形往往是一种很有用的工具,它可以帮助我们直观地了解结果的某些性态。
Matlab提供了很强的图形功能,能够在根据向量或矩阵给定数据来生成图形。
Matlab图形有数据可视化和图形处理两大功能,在数据的可视化部分,Matlab可使用户计算所得的数据根据其不同情况转化成相应的图形。
用户可以选择直角坐标、极坐标等不同的坐标系;它可以表现出平面曲线、空间曲线,绘制直方图、向量图、柱状图及空间网状面图、空间表面图等。
图形函数有4种:
通用图形函数、二维图形函数、三维图形函数、特殊图形函数.
建立一个图形的步骤:
步骤
典型代码
1)准备数据
x=0:
0.2:
12
y1=bessel(1,x);
y2=bessel(2,x);
y3=bessel(3,x);
2)选择窗口,决定绘图位置
figure
(1)
subplot(2,2,1)
3)调用基本绘图函数
h=plot(x,y1,x,y2,x,y3);
4)设置绘图线条样式和标记
set(h,'LineWidth',2,{'LineStyle'},...
{'--';':
';'-.'}
set(h,{'Color'},{'r';'g';'b'})
5)设置坐标轴范围、刻度和栅格线
axis[012-0.51])
gridon
6)标记图形坐标轴、图形图例以及其它文字
xlable('Time')
ylable('Amplitude')
legend(h,'First','Second','Third')
title('BesselFun
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 讲义