第1章 MATLAB 入门.docx
- 文档编号:30207937
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:27
- 大小:41.12KB
第1章 MATLAB 入门.docx
《第1章 MATLAB 入门.docx》由会员分享,可在线阅读,更多相关《第1章 MATLAB 入门.docx(27页珍藏版)》请在冰豆网上搜索。
第1章MATLAB入门
第1章MatLab入门
本章学习的主要目的:
1.了解MatLab软件的功能,熟悉MatLab软件的各菜单、工具栏及常用命令的使用。
2.掌握MatLab有关矩阵的创建方法、矩阵的基本运算符、矩阵的计算函数。
3.掌握MatLab的符号运算。
1.1MatLab语言概述
1.1.1MatLab语言的发展
MatLab语言是由美国的CleverMoler博士于1980年开发的。
设计者的初衷是为解决“线性代数”课程的矩阵运算问题取名MatLab即MatrixLaboratory矩阵实验室的意思。
它将一个优秀软件的易用性与可靠性、通用性与专业性、一般目的的应用与高深的科学技术应用有机的相结合。
1.1.2MatLab的功能
1.矩阵运算功能
MatLab提供了丰富的矩阵运算处理功能,是基于矩阵运算的处理工具。
例如C=A+B,A,B,C都是矩阵,是矩阵的加运算,即使一个常数,Y=5,MatLab也看做是一个11的矩阵。
2.符号运算功能
符号运算即用字符串进行数学分析,允许变量不赋值而参与运算,用于解代数方程、微积分、复合导数、积分、二重积分、有理函数、微分方程、泰勒级数展开、寻优等等,可求得解析符号解。
3.丰富的绘图功能与计算结果的可视化
具有高层绘图功能——二维、三维绘图;具有底层绘图功能——句柄绘图;使用plot函数可随时将计算结果可视化。
4.图形化程序编制功能
动态系统进行建模、仿真和分析的软件包;用结构图编程,而不用程序编程;只需拖几个方块、连几条线,即可实现编程功能。
5.丰富的MatLab工具箱
MatLab主工具箱;符号数学工具箱;SIMULINK仿真工具箱;控制系统工具箱;信号处理工具箱;图象处理工具箱;通讯工具箱;系统辨识工具箱;神经元网络工具箱;金融工具箱。
6.MatLab的兼容功能
可与C语言、FORTRAN语言跨平台兼容;用函数CMEX、FMEX实现。
7.MatLab的容错功能
非法操作时,给出提示,并不影响其操作。
例如在命令窗口输入1/0,执行结果显示如下,提示被0除,结果为无穷大。
Warning:
Dividebyzero
ans=Inf
8.MatLab的开放式可扩充结构
MatLab所有函数都是开放的;用户可按自己意愿随意更改;正因为此功能,使得MatLab的应用越来越广泛。
9.强大的联机检索帮助系统
可随时检索MatLab函数;可随时查询MatLab函数的使用方法。
1.1.3MatLab的应用.
1.工业研究与开发。
2.数学教学,特别是线性代数。
3.数值分析和科学计算方面的教学与研究。
4.电子学、控制理论和物理学等工程和科学学科方面的教学与研究。
5.经济学、化学和生物学等计算问题的所有其他领域中的教学与研究。
1.2MatLab的使用
1.2.1MatLab的启动
(1)进入MatLab工作环境:
方法1开机执行程序MatLab安装目录\MatLab.exe
方法2用鼠标双击MatLab图标
方法3点击windows窗口的开始----程序----MatLab
(2)退出MatLab工作环境:
方法1点击file菜单下的exitMatLab
方法2点击MatLab窗口的关闭按钮.
1.2.2MatLab的界面
MatLab的界面上有五个窗口,它们是:
(1)命令窗口
在命令窗口中可以直接输入命令行,以实现计算或绘图功能,用clc命令清除命令窗口的内容,命令pause暂停操作,直至按任意键继续。
(2)起始面板
该窗口中显示MatLab总包和已安装的工具箱的帮助、演示、GUI工具和产品主页方面的内容。
(3)工作空间
该窗口中显示当前MatLab内存中使用变量的信息,包括变量名、变量数组大小、变量字节大小和变量类型。
在该窗口选定某个变量后,双击变量名,将打开数组编辑器窗口,可以显示和修改该变量的具体内容,该显示主要用于数值型变量。
(4)命令历史
该窗口显示所有执行过的命令。
利用该窗口,一方面可以查看曾经执行过的命令;另一方面可以重复利用原来输入的命令行,这只需在命令历史窗口中直接双击某个命令即可。
(5)当前目录
该窗口显示当前工作目录下所有文件的文件名、文件类型和最后修改时间。
可以在该窗口上方的小窗口中修改工作目录。
1.2.3MatLab的运行方式
MatLab提供了两种运行方式:
命令行方式和M文件方式.
(1)命令行运行方式通过直接在命令窗口中输入命令行来实现计算或作图功能。
但这种方式在处理复杂的问题和大量数据时相当困难。
(2)M文件运行方式是在一个以m为扩展名的M文件中输入一系列数据和命令,然后让MatLab执行这些命令。
MatLab的M文件有两种类型:
脚本M文件和函数M文件。
脚本文件就是命令的简单叠加,没有输入和输出参数,运行产生的所有变量是全局变量。
函数M文件有输入和输出参数,可以弥补MatLab的内部函数有限的不足。
自定义新的函数,所有变量除特殊声明外,都是局部变量。
1.2.4MatLab的数
(1)MatLab操作的数的范围为复数,表示为a+bi或a+bj
例1求
的值。
输入sqrt(-1)
执行结果:
ans=0+1.0000i
例2设复数
,计算
。
输入指令:
z1=3+4i,z2=1+2*i,z3=2*exp(i*pi/6),z=z1*z2/z3
执行结果:
z1=3.0000+4.0000i
z2=1.0000+2.0000i
z3=1.7321+1.0000i
z=0.3349+5.5801i
例3复数矩阵的生成。
输入指令:
A=[1,3;2,4]-[5,8;6,9]*i
B=[1+5i,2+6i;3+8*i,4+9*i]
执行结果:
A=
1.0000-5.0000i3.0000-8.0000i
2.0000-6.0000i4.0000-9.0000i
B=
1.0000+5.0000i2.0000+6.0000i
3.0000+8.0000i4.0000+9.0000i
例4求上例复数矩阵A的实部、虚部、模和相角。
输入指令:
A_real=real(A)
A_imag=imag(A)
A_magnitude=abs(A)
A_phase=angle(A)*180/pi%以度为单位计算相角
执行结果:
A_real=
13
24
A_imag=
-5-8
-6-9
AC_magnitude=
5.09908.5440
6.32469.8489
A_phase=
-78.6901-69.4440
-71.5651-66.0375
例5用MatLab计算
能得到–2吗?
输入指令:
a=-8;
r=a^(1/3)
执行结果如下,输出的是其中的一个根:
r=1.0000+1.7321i
(2)数据显示格式
format
默认值short
formatshort
保证小数点后有四位有效数字
formatshorte
用5位科学计数法表示
formatshortg
用15位科学计数法表示
formatlong
用15位数字表示
formatlonge
用15位科学计数法表示
formatrat
用近似的有理数表示
formatloose
输入命令和回显之间加空行
formatcompact
输入命令和回显之间不加空行
(3)数据计算精度控制:
digits(n)限制在可控精度运算中取n位有效数字进行计算.
1.2.5MatLab的变量
(1)变量的命名规则
变量名是以字母开头,可以包含字母,数字或下划线的不超过31个字符的字符串,区分大小写,如myfile和Myfile是两个不同的变量。
(2)特殊变量(不能重新赋值)
ans
对于未赋值的运算结果,自动赋给ans变量
eps
机器零阈值
inf或Inf
表示正无穷大,定义为1/0
i,j
虚数单位
NaN
非数,它产生于0×,0/0,/等运算
nargin
函数输入变量数目
nargout
函数输出变量数目
pi
圆周率
realmin
最小可用正实数
realmax
最大可用正实数
(3)变量的查询
函数who与whos作用都是列出在MatLab工作空间中已经驻留的变量名清单,不同的是whos在给出驻留变量的同时,还给出它们的维数及性质。
如在命令窗口输入who后,显示
Yourvariablesare:
AB
在命令窗口输入whos后,显示
NameSizeBytesClass
A2x2230cellarray
B1x1264structarray
(4)变量的删除
在命令窗中运用clear指令可以删除内存中指定的变量,
格式:
clear变量名%变量名之间以空格隔开;
%若不写变量名,缺省变量全部被删除。
(5)变量的的保存与获取
把MatLab工作空间中一些有用的数据长久保存下来的方法是生成mat数据文件。
mat文件是标准的二进制文件,还可以以ASCII码形式保存。
用命令save保存变量,用load恢复已保存的变量。
具体格式:
save将工作空间中所有的变量存到MatLab.mat文件中。
savedata将工作空间中所有的变量存到data.mat文件中。
savedataab将工作空间中a和b变量存到data.mat文件中。
可用load指令调用已生成的mat文件。
load将MatLab.mat文件中的变量恢复到工作空间中。
loaddata将data.mat文件中的变量恢复到工作空间中。
loaddataab将data.mat文件中的变量a,b恢复到工作空间中。
例6假定内存中已经存在变量X,Y,Z
(a)保存变量X,Y,Z变量在文件saf.mat中。
savesafXYZ%保存变量X,Y,Z变量在文件saf.mat中
dir%显示当前目录下的文件
...saf.mat
(b)从文件saf中恢复变量Z
clear%删除内存中所有变量
loadsafZ%恢复变量Z
who%查看变量
Yourvariablesare:
Z
1.2.6MatLab的矩阵和向量
MatLab是一种直译式的高级语言,建立在向量、数组和矩阵的基础上,矩阵是MatLab的核心。
(1)创建矩阵
方法1直接输入法
规则:
矩阵元素必须用[]括住;
矩阵元素必须用逗号或空格分隔;
在[]内矩阵的行与行之间必须用分号或回车分隔;
矩阵元素可以是任何实数或复数,MatLab表达式,复数可用特殊函数i,j输入。
例7生成一个实数矩阵和复数矩阵
输入指令:
a=[1,2,3;4,5,6],x=[2,pi/2;sqrt(3),3+5i]
执行结果:
a=123
456
x=2.00001.5708
1.73213.0000+5.0000i
方法2用MatLab函数创建矩阵
空阵[]MatLab允许输入空阵,当一项操作无结果时,返回空阵。
zeros(n,m)生成n行m列的零矩阵。
ones(n,m)生成n行m列的全1矩阵。
eye(n,m)生成n行m列对角线元素全为1其它元素为0的矩阵。
rand(n,m)生成(0,1)均匀分布的n行m列的随机矩阵。
randn(n,m)生成正态分布的n行m列的随机矩阵
magic(n)n阶幻方矩阵。
n=1,3,4,5......pascal(n)n阶杨辉三角形矩阵
diag(v,k)生成和提取对角阵。
diag(v)当v为矩阵时,提取矩阵的对角元生成一个向量;当v为向量时,用向量的元素单位矩阵eye(n)为对角元生成同维数的对角矩阵。
triu(v,k)生成和提取上三角阵。
tril(v,k)生成和提取下三角阵。
repmat(a,m,n)生成m×n分块矩阵,每块元素为a矩阵。
方法3在M-文件中用MatLab语句创建一个矩阵。
如创建和保存矩阵AM的MyMatrix.m文件。
AM=[101,102,103,104,105,106,107,108,109;...
201,202,203,204,205,206,207,208,209;...
301,302,303,304,305,306,307,308,309];
方法4从一个外部数据文件中装载并创建一个矩阵。
把下面的数据保存在一个文本文件a.txt中
123
234
在命令窗口中输入loada.txt,则在内存中生成2×3矩阵变量a。
(2)向量的生成方法
同矩阵的生成;
冒号:
运算
j:
k生成向量[j,j+1,j+2,…,k]
j:
i:
k生成向量[j,j+i,j+2i,…,k-rem((k-j),i)],
如a=1:
2:
6生成a=[135]
linspace(a,b,n)从a到b的n个线性等分数组
logspace(a,b,n)从a到b的n个对数等分数组
如>>linspace(1,2,3)
ans=
1.00001.50002.0000
>>logspace(1,2,3)
ans=
10.000031.6228100.0000%log10(31.6228)=1.5
(3)矩阵的标识
元素标识方式:
A(i,j),i,j分别代表行数和列数,
向量标识方式:
A(vr,vc)vr,vc是含矩阵行号和列号的单调向量,
如A(1,[1,3])表示A(1,1),A(1,3)
0-1向量标识方式:
A(vr,vc),A(vr,:
)A(:
vc),vr,vc是由0,1组成的长度为矩阵行维和列维的逻辑向量,1表示取,0表示不取。
islogical(a)测试矩阵a是否为逻辑变量,若不是,可以用a&1或A(v)转换,v是按一维存储的下标向量。
如A(2,:
)表示矩阵A的第2行元素,A(:
3)表示矩阵A的第3列元素
矩阵表示方式:
A(B),B与A同维逻辑矩阵,如果B非0,取当前位置元素,否则不取。
(4)矩阵的修改
矩阵的裁剪.从一个矩阵中提出若干行(列)构成新的矩阵成为裁剪。
冒号运算符“:
”是重要的裁剪工具。
设a为4阶方阵,
a(2,:
)提出第二行的元素,构成行向量。
a(:
4)提出第四列的元素,构成列向量。
a(1:
3,:
)提出第1到3行,构成3行4列矩阵。
a(:
1:
3)提出第1到3列,构成4行3列矩阵。
a(1:
2:
4,:
)提出第1行,第3行,构成2行4列矩阵。
a(:
1:
3:
4)提出第1列,第4列,构成4行2列矩阵。
几个矩阵接在一起称为矩阵的拼接,左右拼接时行数要相同,用逗号隔开,上下拼接时列数要相同,用分号隔开。
例8a=[123;234]
a=123
234
[aa;aa]
ans=123123
234234
123123
234234
指令修改,可以用A(,)=来修改。
例9把矩阵a的第3行第3列元素修改位为0
输入指令:
a=[120;305;789],a(3,3)=0
执行结果:
a=120
305
789
a=120
305
780
矩阵的扩充。
方法1用小矩阵生成大矩阵。
例10A=ones(2,4);B=zeros(1,2);C=[2,3];D=[A;B,C]
D=
1111
1111
0023
方法2对超出矩阵维数的元素直接赋值,其余元素补0。
例11把矩阵a由2行3列扩充成3行4列,且第3行第4列元素为1,其余为0,输入指令:
a=[1,2,3;4,5,6];a(3,4)=1
执行结果:
a=1230
4560
0001
矩阵的部分删除。
按行或列赋空值即可,但删除行或列的部分元素则会出错。
例12a(2,:
)=[]删除a的第2行。
矩阵结构的改变
a(:
)表示把矩阵a排成1列(按列的次序),a(:
)在赋值左边,a的维数不变,会把右边数据重组,要求右边数据个数与左边数据个数相等。
函数reshape(a,m,n)在总元素数不变的前提下,将矩阵a改变成m行n列的矩阵。
例13把a矩阵元素排成1排,输入指令:
a=[1,2,3;2,3,4];b=a(:
)
执行结果:
b=1
2
2
3
3
4
把自然数作为元素,按列顺序修改矩阵a,矩阵a的型不变,输入指令:
a(:
)=1:
6
执行结果:
a=135
246
(5)矩阵的运算
(a)矩阵加、减(+,-)运算
规则:
相加、减的两矩阵必须有相同的行数和列数,两矩阵对应元素相加减。
允许参与运算的两矩阵之一是标量,标量与矩阵的所有元素分别进行加减操作。
(b)矩阵乘()运算A*B
规则:
A与B相乘,A矩阵的列数必须等于B矩阵的行数,标量可与任何矩阵相乘。
例14a=[123;456;780];b=[1;2;3];c=a*b
c=14
32
23
d=[-1;0;2];f=pi*d
f=-3.1416
0
6.2832
(c)矩阵数组乘法(.)X.Y,
规则:
X,Y必须有相同的维数,除非其中一个为1×1矩阵。
运算结果为两个矩阵的相应元素相乘,得到的结果与X,Y同维。
例15a=[12;45];b=[2,1;2,3];c=a.*b
c=22
815
(d)矩阵除的运算(/,\)
在线性代数中没有矩阵除的运算,有矩阵逆运算,在MatLab中有两种矩阵除运算a/b,a\b
a/b相当于
,a\b相当于
(e)矩阵数组除的运算(./,.\)a./b,a.\b
a./b=b.\a,a.\b=b./a
a./b=b.\a—都是a的元素被b的对应元素除
a.\b=b./a—都是b的元素被a的对应元素除
规则:
a,b必须有相同的维数,除非其中一个为1×1矩阵。
运算结果为两个矩阵的相应元素相除,得到的结果与a,b同维。
例16a=[12;45];b=[2,1;2,3];c=a./b
c=0.50002.0000
2.00001.6667
(f)矩阵转置-Am×n’
运算结果为n×m矩阵,对应元素由矩阵A行列互换得到。
例17a=[124;835];c=a’
c=18
23
45
(g)矩阵乘方——^
例18a=[1,2,3;4,5,6;7,8,9];a^2
ans=303642
668196
102126150
(h)矩阵关系运算符及关系函数
A小于B
A
lt(A,B)
A小于或等于B
A<=B
le(A,B)
A大于B
A>B
gt(A,B)
A大于或等于B
A>=B
ge(A,B)
A等于B
A==B
equ(A,B)
A不等于B
A~=B
ne(A,B)
结果是0—1矩阵,1表示真,0表示假。
例19:
A=1:
9,B=10-A,r0=(A<4),r1=(A==B)
A=123456789
B=987654321
r0=111000000
r1=000010000
(i)矩阵的逻辑运算符及逻辑函数
在判别一个量是否为真时,以0代表假,以任意非零值代表真。
逻辑运算符:
“&”
and(A,B)
代表逻辑运算中的与
“|”
or(A,B)
代表逻辑运算中的或
“~”
not(A)
代表逻辑运算中的非
xor(A,B)
代表逻辑运算中的异或
注意逻辑运算和关系运算之间的优先级次序,其中逻辑与和或有相同的优先级,非的优先级最高。
规则:
要求运算两矩阵维数相同,标量和矩阵运算等于标量和矩阵的每一个元素都进行运算。
例20A=-3:
3,L1=~(A>0),L2=~A>0,L3=~A,L4=A>-2&A<1
A=-3-2-10123
L1=1111000
L2=0001000
L3=0001000
L4=0011000
逻辑函数:
y=all(x)判断是否所有元素为非零数,若x为向量,当所有元素非零时y=1,否则y=0;若x为矩阵,all作用于列元素,y为行向量。
y=any(x)判断是否有一个向量元素为非零,若x为向量,当有一元素非零时y=1,否则y=0;若x为矩阵,all作用于列元素,y为行向量。
exist(x)查看变量或函数是否存在。
find(a)找出a矩阵或向量中非零元素的位置标识。
按维数的先后把多维位置排成一维。
如a=[12;03],a(find(a))=5;把a阵中非0元素变成5。
格式:
k=find(a),[i,j]=find(a),[i,j,v]=find(a)
finite(a)
确认矩阵a元素是否为有限数
isempty(a)
确认矩阵a是否为空矩阵
isequal(A,B,C)
判断几个对象是否相等
isnumeric(a)
判断对象a是否为数据
issparse(a)
判断矩阵a是否为稀疏矩阵
isstr(a)
判断矩阵a是否为字符串
islogical(a)
判断矩阵a是否为逻辑矩阵
例21找出矩阵
中所有绝对值大于3的元素。
方法1:
A=zeros(2,5);
A(:
)=-4:
5
L=abs(A)>3
islogical(L)
X=A(L)
A=
-4-2024
-3-1135
L=
10001
00001
ans=
1
X=
-4
4
5
方法2:
A(find(abs(A)>3))
ans=
-4
4
5
1.2.7MatLab的内部函数
函数
名称
函数
名称
sin(x)
正弦函数
max(x)
最大值
cos(x)
余弦函数
min(x)
最小值
tan(x)
正切函数
sqrt(x)
开平方
cot(x)
余切函数
exp(x)
以e为底的指数
sec(x)
正割函数
log(x)
以e为底的对数
csc(x)
余割函数
log10(x)
以10为底的对数
asin(x)
反正弦函数
abs(x)
绝
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第1章 MATLAB 入门