MATLAB教案03102.docx
- 文档编号:25067706
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:59
- 大小:675.64KB
MATLAB教案03102.docx
《MATLAB教案03102.docx》由会员分享,可在线阅读,更多相关《MATLAB教案03102.docx(59页珍藏版)》请在冰豆网上搜索。
MATLAB教案03102
MATLAB语言入门与提高
第一章MATLAB简介
1.1MATLAB的发展史
矩阵运算→解决控制问题,控制系统工具箱→其他领域的工具箱。
工具箱:
1.功能性:
符合计算、图形建模仿真、文字处理和硬件实时交互等;
2.科学性:
控制、信号处理、通信等。
特点:
起点高、人机界面适合科技人员,强大而简易的作图功能、智能化程度高,功能丰富、可扩展性能,20多个工具箱。
1.2MATLAB的安装
一.MATLAB对系统的要求
硬件:
PentiumⅡ以上的个人计算机
CD—ROR
32MB以上内存
1GB以上硬盘
VGA以上的显卡
打印机
声卡
软件:
WINDOWS操作系统(或UNIX或Macintosh)
IE4.0
AdobeAcrobatReader3.0
Word97
VC等。
二.MathLab5.3安装
key:
11-10224-43044-38818-03811-61063-11324
安装时选择不要安装:
MATLABTOURSandMatlabJAPANESEHELP
1.3MATLAB快速入门
一.启动
1.双击图标
2.开始—程序—matlab—matlab
二、命令窗口
1.菜单介绍
FileEditViewToolbarWindowHelp
2.指令行编辑
←↑→↓ctrl+←ctrl+→HomeEndEscDelBackspace
移动光标,且执行命令光标无需在行尾
2.工作空间
who、whos、save、save[文件名]、load、load[文件名]。
who:
检查内存变量。
whos:
检查内存变量的详细情况(变量的名称、大小、类型)。
a=[1,2,3;4,5,6;7,8,9]
a=123
456
789
>>b=[1,3,5,7,9]>>c='abcd'
b=13579c=abcd
>>who
Yourvariablesare:
abc
>>whos
NameSizeBytesClass
a3x372doublearray
b1x540doublearray
c1x48chararray
Grandtotalis18elementsusing120bytes
clear:
删除已存在的变量,无法恢复
cleara:
删除变量a
File—ShowWorkspace:
显示工作区参数
保存参数save
save:
将参数保存在工作区
saveabc:
将工作区中的所有参数保存在abc.mat文件中
saveabcab:
将参数a、b保存在abc.mat文件中。
File—SaveWorkspace—As:
将工作区中的所有参数另存为…..
loadabc:
将abc.mat文件中所有参数载入工作区。
4.工具条
5.通用操作指令
cdclearclcclfdirdispechoholdpackquittype
6.通配符
?
:
代表任意一个字符
*:
代表任意一串字符
savedatax*:
以x开头的参数保存到data.mat文件中
loadtestex1*95:
将test.mat文件中所有前三个字符为“ex1”,最后两个字符为“95”的参数载入工作区。
1.4MATLAB的帮助
Helpwin
Helpdesk
Demo
help显示所有帮助
helpsqrt显示sqrt的帮助文件
helpplot显示所有绘图命令
全局变量与局部变量
局部变量:
在一个函数内部使用。
全局变量:
在两个以上函数中共用的变量。
globala:
定义a为全局变量。
第二章MATLAB的数值计算功能
2.1MATLAB的表达式和变量
一.表达式
1.表达式:
由运算符、函数、变量名和数字组成。
2.形式:
1)表达式;2)变量=表达式。
3.数字的表达:
3、9.9、0.00011、0.9、pi、0.8e-3等。
4.常用算符:
+-*/\^等。
二.变量、永久变量和复数
ans:
系统默认变量,当没有定义变量时。
eps:
容许误差
Inf:
无穷大,当分母为零时
NaN:
不定值,如0/0,Inf/Inf运算
i或j:
虚数单位
。
复数:
z=3+4i,或z=3+4j。
四.数据格式
>>formatshort短格式>>formatshorte短格式科学式
>>1.33>>1.33
ans=1.33004位小数ans=1.3300e+000
>>formatlong长格式>>formatlonge长格式科学式
>>1.33>>1.33
ans=1.3300000000000014位小数ans=1.330000000000000e+000
formatbank银行格式formathex十六制格式
2.2MATLAB的基本计算功能
一.三角函数
sim(x)正弦sinh(x)双曲正弦asin(x)反正弦asinh(x)反双曲正弦cos(x)余弦cosh(x)双曲余弦acos(x)反余弦acosh(x)反双曲余弦tan(x)正切tanh(x)双曲正切atan(x)反正切atanh(x)反双曲正切sec(x)正割sech(x)双曲正割asec(x)反正割asech(x)反双曲正割csc(x)余割csch(x)双曲正割acsc(x)反正割acsch(x)反双曲正割cot(x)余切coth(x)双曲正切acot(x)反余切acoth(x)反双曲余切
二.指数函数
exp(x)指数log(x)自然对数log10(x)常用对数sqrt(x)平方根
例:
y=sqrt(log(x))=
三.复数函数
abs绝对值angle相角conj复共轭imag复数虚部real复数实部+-*/^
例:
z1=3+4jz2=4+5j
r1=abs(z1)phi1=angle(z1)
z11=z1'z12=conj(z1)
a=real(z1)b=imag(z1)
z3=z1+z2z4=z1-z2z5=z1*z2z6=z1/z2z7=z1.^2
四.数值函数
fix朝零方向取整
floor朝负无穷大方向取整
ceil朝正无穷大方向取整
round朝最近的整数取整
rem除后余数
sign符号函数
min
max
2.3MATLAB矩阵和数组的创建和保存
要得到一个Matlab的数值矩阵,有五种方法:
·直接输入
·利用矩阵编辑器
·利用Matlab函数和语句
·利用.M文件
·利用.Mat文件
一.直接输入
对于较小较简单的矩阵,从键盘上直接输入矩阵是最常用的、最方便和最好的数值矩阵创建方法。
用这种直接输入法的矩阵由以下三个要素组成:
1.整个输入矩阵必须以方括号"[]"为其首尾;
2.矩阵的行与行之间必须用分号";"或回车键[Enter]隔离;
3.矩阵元素必须由逗号","或空格分隔。
矩阵元素可以是不包含未定义变量的任何表达式。
但在Matlab中,即便没有任何元素的矩阵也是合法的,它被称为“空阵”(Emptymatrix)。
空阵在Matlab的矩阵操作中非常有用。
[例1]在Matlab环境下,用下面三条指令创建数值矩阵C
>>a=2.7358;b=33/79;%这两条指令分别给变量a,b赋值
>>C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]%这条指令用于创建矩阵C
下面是屏幕显示的结果
C=1.00005.4716+0.4177i0.6909
0.70714.82443.5000+1.0000i
说明:
(1)分号";"的三个作用:
(A)在"[]"方括号内时,它是矩阵行间的分隔符。
(B)它可用作在指令与指令间的分隔符。
(C)当它存在于赋值指令后时,该指令执行后的赋值结果将不显示在屏幕上。
(2)指令中的"pi"和i都时Matlab的预定义变量(Predefinedvariable)名。
(A)"pi"代表π的一个拥有16位有效数字的近似值。
(B)"i"代表定义为的虚数单位。
(3)在Matlab中,"%"以后的物理行中的内容仅作注释用,对Matlab的计算不产生任何影响。
(4)被赋值过的变量,不管是否在屏幕上显示过,都存放在Matlab的工作内存(workspace)中,随时被以后的指令所调用或显示。
(5)当然,在每个指令输入行结束后,要按回车键,才能使该行指令被Matlab执行。
[例2]复数矩阵的另一种输入方式
>>R=[1,2,3;4,5,6],I=[11,12,13;14,15,16]
>>CN=R+i*I
R=123I=111213
456141516
CN=1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i
4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i
说明:
(1)逗号","的三个作用:
(A)在"[]"方括号中时,它可作为元素与元素间的分隔符。
(B)它可用作在指令与指令间的分隔符。
(C)当它存在于赋值指令后时,该指令执行后的赋值结果将显示在屏幕上。
(2)本例的"i"和"I"表明:
在Matlab中,同一个字母的大小写确实具有不同的含义。
>>a=[1,2,3;4,5,6;7,8,10];(加“;”不显示结果)
行内元素加‘,’或‘’分列,行与行之间加‘;’分行。
a=123
456
7810
>>a(2,2)显示第2行第2列元素
ans=5
>>a(2,2)=1给第2行第2列元素赋值1
a=123
416
7810
>>c=a(:
2)显示第2列>>d=a(2,:
)显示第2行
c=2d=416
1
8
>>a(:
2)=[0;0;0]将第2列元素改为0>>e=a(1:
2,2:
3)显示1-2中2-3列元素
a=103e=03
40606
7010
>>f=a(1:
2,3)显示第3列1-2行元素>>a
f=3a=103
6406
7010
>>a=12>>b=710
341522
>>b=a^2
>>c=[1,2,3;4,5,6;7,8,9]>>d=c'转置
c=123d=147
456258
789369
>>c=[1,2,3;4,5,6;7,8,10]>>d=inv(c)求逆
c=123d=-0.6667-1.33331.0000
456-0.66673.6667-2.0000
78101.0000-2.00001.0000
求和
>>a=[1,2,3,4,5,6,7,8,10]>>b=sum(a)求列列量和
a=123b=12,15,19
456>>a(:
1-2)=[]删除1-2列
7810a=3
>>a(1:
2,:
)=[]删除1-2行6
a=7899
size(a,x)x=1.返回行数x=2.返回列数
[m,n]=size(a)返回行和列的大小(m—行数,n—列数)
length(a)=max[size(a)]行或列数的最大值。
二、利用矩阵编辑器创建和修改数值矩阵
当需要输入的矩阵维数较大或者矩阵元素不是很简单的数字和已赋值变量时,若用直接操作,为改善用户工作环境,Matlab提供了一个专门的数值矩阵编辑器(Matrixeditor)编辑器的调用如下:
1.预先定义一个矩阵
2.点击“Workspace”功能按钮
3.对工作进行编辑
三、利用Matlab函数创建数值矩阵
从广义上讲,整个Matlab软件就是为用户能便捷得到数值矩阵结果而服务的。
而且随用户对Matlab不断熟悉,利用Matlab现有函数和语句创建矩阵的方法就会越多。
1.一些常用的特殊矩阵的生成
[例1]利用指令diag产生对角阵
ar=rand(3,3)%产生(3*3)的"0-1均匀分布“随机阵”
d=diag(ar)%用矩阵的主对角元素形成列向量d
D=diag(d)%用向量元素构成对角阵D
ar=0.21900.67930.5194d=0.2190
0.04700.93470.83100.9347
0.67890.38350.03460.0346
D=0.219000
00.93470
000.0346
>>a=zeros(2,4)生成2×4的全零矩阵
a=000
100
b=ones(3)生成全部元素为1的3×3矩阵
b=ones(2,3)生成全部元素为1的2×3矩阵
>>c=eye(3,3)生成3×3的单位矩阵>>d=eye(4,3)
c=100d=100
010010
001001
000
[例2]由4元行向量[11.792.171]创建一个伴随阵
>>p=[1,1.79,2.17,1];%送入4元向量p
>>cp=[zeros(3,1)eye(3,3);p]%创建伴随阵cp
>>cp=01.000000
001.00000
0001.0000
1.00001.79002.17001.0000
说明:
在上述指令中的zeros(3,1)是生成三元全零向量函数;eye(3,3)是生成三维单位矩阵。
关于它们的详细说明,请查Matlab的用户手册,也可在Matlab环境中用helpzeros及helpeye获得在线帮助说明。
2.矩阵标识和子矩阵
a(1,:
)提取矩阵a的第1行
a(:
2)提取矩阵a的第2列
a(1,2)提取矩阵a的第1行第2列元素
3.矩阵的结构变换
diag(A):
取矩阵A的对角线元素
rot90(A):
将矩阵A逆时针方向旋转900
rot90(A,k):
将矩阵A逆时针方向旋转k×900
fliplr(A):
将矩阵A左右翻转
flipud(A):
将矩阵A上下翻转
tril(A,k):
取矩阵A的第k条对角线及以下的元素,其余为0
tril(A):
取矩阵A的主对角线及以下的元素,其余为0
tril(A,k):
取矩阵A的第k条对角线及以上的元素,其余为0
triu(A):
取矩阵A的主对角线及以上的元素,其余为0
4.矩阵的保存和提取
saveabcab
loadabc
5.数组的建立和保存
数组可以看作是行向量,即只有1列的矩阵。
a=0:
0.05:
1创建起始值=0,增量=0.05,终止值=1的等差数列。
x=linspace(0,1,75)利用linspace创建起始值=0,终止值=1,元素个数=75的等差数列
x=logspace(0,2,11)利用logspace创建起始值=100,终止值=102,元素个数=11的等比数列,公比=100。
2
2.4矩阵运算及数组运算
矩阵运算:
+-*/右除\左除^'转置inv(A)。
X=B/A方程XA=B的解
X=A\B方程AX=B的解
数组运算:
.+.-.*.\左除.^.'转置
A./B=B.\Asqrtm(A)=A1/2
x=expm(A)
x=eAx=exp(A)
[xij]=[eaij]
>>a=[1,2;3,4]
a=12
34
>>b=a^2矩阵运算,表示a*a
b=710
1522
>>c=a.^2数组运算,表示aij2
c=14
916
>>c=[1,2,3;4,5,6;7,8,9]
c=123
456
789
>>d=c’求转置矩阵
d=147
258
369
>>c=[1,2,3;4,5,6;7,8,10]
c=123
456
7810
>>d=inv(c)求逆矩阵
d=-0.6667-1.33331.0000
-0.66673.6667-2.0000
1.0000-2.00001.0000
2.5数组函数和矩阵函数
上机自学
a=[1,2,3;4,5,6;7,8,9]
b=[3,4,5;7,8,10;2,6,9]
a.
b=[(aij
bij)ij]对应元素相加减
a.
b=[(aij
bij)ij]对应元素相乘
a./b=[(aij/bij)ij]对应元素相除
ndims(a)求数维数
向量积x=[x1,x2……xn]y=[y1,y2……yn]
z=x*y出错
应为z=x.*yz=x1y1+x2y2+x3y3……xnyn点积、数量积内积
a=16313a(k)=99将对应的指标值换为99
5108a=99399
96125108
41519699
k=find(a>10)4991
k=1
8
9
11
例:
y=min(x)y=max(x)
[v,d]=eig(a)求矩阵a的特征向量v及其对应的特征值d
[y,i]=max(x)求出x中的最大值y及其在x中的位置
c=det(a)求矩阵a的行列式值
第三章高级数值计算
3.1 关系运算和逻辑运算
3.1.1关系操作符(对应元素比较)
<小于<=小于或等于
>大于>=大于或等于
==等于~=不等于
关系成立运算结果为1
关系不成立运算结果为0
非零数为真即“1”,零元数为假即“0”。
a=[1,2,-1,-5];b=[0,2,3,1]
a
a<1[0,1,1,1]B=[6,5,4,3,2,1,0]
a<=b[1,0,1,1]
=(A>4)
a<=1[1,0,1,1]
=
a>b[1,0,0,0]0,0,0,1,1,1,1
a>1[0,1,0,0]
=(A==B)
a>=b[1,1,0,0]
=
a==b[0,1,0,0]0,0,1,0,0,0,0
a==1[1,0,0,0]t=B-(A-2)
a~=b[1,0,1,1]t=
a~=1[0,1,1,1]643210-1
既:
{[6,5,4,3,2,1,0]-[0,1,1,1,1,1,1]}
3.1.2逻辑操作符
&与|或~非
逻辑量为真用“1”表示
逻辑量为假用“0”表示
3.1.3关系与逻辑函数
表3.3关系与逻辑函数
xor(x,y):
异或any(x)all(x)
表3.4测试函数
all(x):
向量x中的每一个元累非零时返目1,否则返回0
any(x):
向量x中的任一个元素非零时返回1;否则返目0
exist(‘x’):
检查是否存在该变量。
若存在,返回1;否则返回0
isempty(x):
检查x是否为一个空矩阵。
若是,返回1;否则返回0
isglobal(x):
检查x是否为一个全局变量。
若是返回1;否则返回0
isinf(x):
当x是inf时返回1,否则返回0
isnan(x):
当x等于NnN时返回1,否则返回0
isstr(x):
检查x是否为一个字符串变量。
若是返回1,否则返回0
finite(x):
当x属于(-∞,+∞)时返回1,否则返回0
异或运算
>>x=0:
10
x=012345678910
>>find(x>2)%找出x>2元素的位置(下标)值
ans=4567891011
>>x=[0,nan,inf,1,-9]
x=0NaNInf1-9
>>finite(x)%元素有限,返回真值。
ans=10011
>>isinf(x)%元素为无穷大,返回真值。
ans=00100
>>x='4'%x为字符4
x=4
isstr(x)元素为字符,返回真值
ans=1
>>ishold%当前绘图保持状态是“ON”,符合真值。
容许误差exp的作用:
exp=2-52
例:
x=(-2:
2)/3
sm(x)/x则发出Warning
若x=(-2:
2)/3
x=x+(x==0)*eps
sm(x)/x给出结果
x=0,sm(x)/x=1
p55例4
x=linspace(0,5,100)等差数列(0表示初值,5表示终值,100表个数)
y=cos(x),plot(x,y)
holdon
z=(y>=0).*y将cos(x)负值置0
plot(x,z,’r’)
z=z+0.3*(y<0)cos(x)正值增加3%
plot(x,z,’y’)
z=(x<=4).*z将x>4的正值置0
plot(x,z,’g’),plot(x,z,),xlabe(‘x’),ylabel(‘y’),little(‘一个不连续的信号’)
3.1.4NaN(不定值)和空矩阵
3.2多项式
3.2.1多项式的表达和求根
1.建立多项式:
系数矩阵按降幂排列,缺项用“0”补。
>>p=[4,3,2,1]%建立
多项式
p=4321
2.求多项式的根:
>>r=roots(p)
r=-0.6058
-0.0721+0.6383i
-0.0721-0.6383i
>>fx=[1,3,2]
fx=132
>>x=roots(fx)%列向量
x=-2
-1
3.已知根的列向量求多项式
>>x=[1;2]%根为1和2,列向量。
x=1
2
>>p=poly(x)%求多项式
p=1-32%表示多项式为
4.求多项式的值y=ployval(p,x):
计算x点处多项式值
>>a=[1,2,3,4,5]%建立多项式
a=12345
>>y=polyval(a,1)%计算x=1处的多项式值
y=15
>>p=[1,2,3;4,5,6;7,8,9]
5.求方阵的特征多项式
>>a=[3,5,7;9,3,5;11,14,8]%已知的方阵
a=357
935
11148
>>pa=poly(a)%求方阵的特征值
pa=-14.0000-135.0000-428.0000%第一项一定是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 教案 03102
![提示](https://static.bdocx.com/images/bang_tan.gif)