Matlab实训课.docx
- 文档编号:4083853
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:49
- 大小:986.96KB
Matlab实训课.docx
《Matlab实训课.docx》由会员分享,可在线阅读,更多相关《Matlab实训课.docx(49页珍藏版)》请在冰点文库上搜索。
Matlab实训课
Matlab实训
课题一Matlab基础
1、Matlab是什么?
MATLAB®是一种对技术计算高性能的语言。
它集成了计算,可视化和编程于一个易用的环境中,在此环境下,问题和解答都表达为我们熟悉的数学符号。
典型的应用有:
数学和计算
算法开发
建模,模拟和原形化
数据分析,探索和可视化
科学与工程制图
应用开发,包括图形用户界面的建立
MATLAB是一个交互式的系统,其基本数据元素是无须定义维数的数组。
这能解决很多技术计算的问题,尤其是那些要用到矩阵和向量表达式的问题。
名称“MATLAB”代表matrixlaboratory(矩阵实验室)。
MATLAB最初是编写来提供给对由LINPACK和EINPACK工程开发的矩阵软件简易访问的。
今天,MATLAB使用由LAPACK和ARPACK工程开发的软件,这些工程共同表现了矩阵计算的软件中的技术发展。
MATLAB已经与许多用户输入一同发展了多年。
在大学环境中,它是很多数学类、工程和科学类的初等和高等课程的标准指导工具。
在工业上,MATLAB是高产研究、开发和分析所选择的工具。
MATLAB以一系列称为工具箱的应用指定解答为特征。
对多数用户十分重要的是,工具箱使你能学习和应用专门的技术。
工具箱是MATLAB函数(M-文件)的全面的综合,这些文件把MATLAB的环境扩展到解决特殊类型问题上。
具有可用工具箱的领域有:
信号处理,控制系统神经网络,模糊逻辑,小波分析,模拟仿真等等。
MATLAB产品被广泛应用于下列领域:
测量测试
数学建模与分析
信号处理
财经金融建模与分析
工作空间窗口
图像处理与地理信息
……
2、Matlab桌面工具的介绍
打开编辑器窗口
这些工具是:
Ø命令窗口:
运用命令窗口去调入变量,运行函数和M-文件。
例1:
控制输出值格式的格式命令format(控制显示的数据的数值格式。
只影响数据的显示结果,而与Matlab如何计算及储存它们无关)
>>formatshort
>>x=[4/31.2345e-6]
x=
1.33330.0000
>>formatshorte
>>x=[4/31.2345e-6]
x=
1.3333e+0001.2345e-006
其他格式
formatshortg1.33331.2345e-006
formatlong1.333333333333330.00000123450000
formatlonge1.333333333333333e+0001.234500000000000e-006
formatlongg1.333333333333331.2345e-006
formatbank1.330.00
formatrat4/31/810045
formathex3ff55555555555553eb4b6231abfd271
如果表达式无法在一行输入完,用三点"…"加回车键表示下一行继续该语句的输入.例如:
例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:
命令行的编辑(键盘上的多个箭头键和控制键允许撤消,编辑和重新执行之前的命令)和命令窗口常用指令
↑
Ctrl+p
召回上一行
指
令
及
含
义
cd
设置当前工作目录
↓
Ctrl+n
召回下一行
clf
清除图形窗
←
Ctrl+b
后退一个字符
clc
清除指令窗中显示内容
→
Ctrl+f
前进一个字符
clear
清除工作空间中保存的变量
Ctrl+→
Ctrl+r
右移一个单词
dir
列出指定目录下的文件和子目录
Ctrl+←
Ctrl+l
左移一个单词
edit
打开M文件编辑器
Home
Ctrl+a
移至行始
exit
关闭/退出
End
Ctrl+e
移至行末
quit
关闭/退出
Esc
Ctrl+u
清除该行
more
使其后的显示内容分页进行
Del
Ctrl+d
删除光标所在字符
return
返回到上层调用程序;
Backspace
Ctrl+h
删除光标之前字符
type
显示指定M文件的内容
Ctrl+k
删除至行末
which
指出其后文件所在的目录
Ø命令历史窗口在控制窗的输入内容都被记录在命令历史窗口中。
在命令历史中,你可以看到以前用过的函数,并且可以复制和执行选定行。
Ø编辑器窗口用来生成和调试M-文件,这些M-文件是你为运行MATLAB函数所写的程
如果仅是要看M-文件的内容,可以用type命令使它在命令窗口中显示。
Ø
工作空间浏览器
Matlab工作空间包含内建Matlab处理任务时以及储存在记忆体中的变量排列。
你可以通过使用函数、运行M-文件、装载已存文件等方式增加变量到工作区。
双击可查看、更改变量值
3、奇异的魔方
雕版画---忧郁者I欧洲文艺复兴时期,德国的一个艺术家兼业余数学爱好者阿布列西特.杜勒的作品。
这幅图布满了各种各样的数学符号,而且如果你仔细观察的话就会发现在右上角有一个矩阵。
那个就是奇妙的魔方矩阵。
下面让我们来输入杜勒的魔方的一组元素,只要遵循下列几个基本步骤就可以了:
⏹用空格或者逗号来区分一行里不同的元素。
⏹用分号“;”来区分不同的行。
⏹用方括号来括住全体元素。
在命令窗口输入:
>>A=[163213;510118;96712;415141]
A=
163213
510118
96712
415141
>>sum(A)%每一列的数字加起来的结果
ans=
34343434
如果每一行加起来又会怎样呢?
>>A'%一个矩阵的转置矩阵
ans=
16594
310615
211714
138121
>>sum(A')'%包含由行元素的和组成的列向量
ans=
34
34
34
34
对角线元素由diag函数很容易就被列出来
>>diag(A)
ans=
16
10
7
1
>>sum(diag(A))
ans=
34
另外的对角线呢?
即所谓的反对角线,在数学上就不是那么重要了。
所以Matlab就没有相应的函数。
但在图形函数中,函数fliplr产生一个左右调转的矩阵。
>>sum(diag(fliplr(A)))
ans=
34
我们用Matlab证明了在杜勒的木板图中的那个矩阵的确是一个魔术方阵。
关于矩阵
记i行j列元素为A(i,j)。
例如A(4,2)就是第4行2列的元素。
在魔方阵中就是15。
实际上用A(k)就可以代表阵中的第k行了,这只用了一个下标。
这是经常用来表示行和列向量的方法。
也可以应用到两维的矩阵,其中的列是由原来的列一直排下去构成的。
对魔方来说,A(8)就是A(4,2)的另一中表达方法,它的值是15。
如果想用矩阵以外的值,系统就会出错。
>>t=A(4,5)
?
?
?
Indexexceedsmatrixdimensions.
如果输入一个数值到矩阵以外的位置,矩阵的大小就会变化来容纳新的数据。
>>X=A;
X(4,5)=17
X=
1632130
5101180
967120
41514117
冒号算子冒号':
'是Matlab里面一个十分重要的算子,适用于各种不同的表达式。
如1:
10表示一行从1到10的整数
100:
-7:
50改变递变的间隔,指定一个间隔长度10093867972655851
按此A(1:
k,j)表示A的第j列前k个元素。
如:
>>A(1:
3,3)
ans=
2
11
7
因此sum(A(1:
4,4))表示计算A的第4列元素的和。
但是有一种更加方便的办法。
关键字':
'本身可以表示某行或某列的全体元素,可以用关键字end来表示最后一行或者最后一列的全体元素,所以
>>sum(A(:
end))%计算A的最后一列元素的和
ans=
34
为什么一个4×4的魔方矩阵的魔术和是34呢?
如果我们从1加到16再把答案除以4,答案当然是34。
实际上Matlab提供了一个函数可以计算出任意规格的魔方矩阵,毫不奇怪,这个函数就是magic。
>>magic(5)
ans=
17241815
23571416
46132022
101219213
11182529
【练习1】用magic函数求取杜勒的魔方矩阵。
Matlab提供产生基本矩阵的四个函数:
zeros产生一个全零矩阵;ones产生一个全1矩阵
rand产生一个元素是均匀分布随机数的矩阵;randn产生一个元素是正态分布的随机数的矩阵
>>C=zeros(2,4)
C=
0000
0000
>>F=7*ones(3,3)
F=
777
777
777
>>N=fix(10*rand(1,10))%fix函数功能是向零取整
N=
1994814979
>>R=randn(4,4)
R=
1.0668e+0002.9441e-001-6.9178e-001-1.4410e+000
5.9281e-002-1.3362e+0008.5800e-0015.7115e-001
-9.5648e-0027.1432e-0011.2540e+000-3.9989e-001
-8.3235e-0011.6236e+000-1.5937e+0006.9000e-001
【练习2】创建一个3×4的1~10随机数的矩阵。
矩阵连接
连接是一个合并小矩阵成大矩阵的过程。
事实上,你创建第一个矩阵时就是通过将它的各自独立的元素连接在一起的。
中括号[]是连接的算子。
>>B=[AA+32;CC]
B=
16321348353445
51011837424340
9671241383944
41514136474633
00000000
00000000
行与列的删除
>>X=A;
X(:
2)=[]
X=
16213
5118
9712
4141
如果删除矩阵的单个元素,其结果就不再是矩阵了。
所以,如下的表达式
>>X(1,2)=[]
?
?
?
Subscriptedassignmentdimensionmismatch.
然而,用单独的下标则是删除一个单独元素或连续的元素,并把剩下的元素改成行向量的形状。
因此
>>X(2:
2:
10)=[]
X=
1692713121
加载命令
加载命令load读出含有由早期Matlab版本形成的矩阵的二进制文件,或者读出含有数值数据的文本文件。
文本文件应该由一个数字的矩阵表格构成,由空格隔开,每一线排一行,而且每一行有相同数量的元素。
如将用微软的写字板,创建一个含有这四行的文本文件,并以magic.dat为名储存。
16.03.02.013.0
5.010.011.08.0
9.06.07.012.0
4.015.014.01.0
在命令窗口
>>loadI:
/magic.dat%读这个文件并创建一个含有我们的矩阵例子的变量magik
>>magic
magic=
163213
510118
96712
415141
M-文件
用M-文件创建自己的矩阵,这些M-文件是包含Matlab代码的文本文件。
用Matlab编辑器或另外的文本编辑器去创建一个文件,它包含你将输入到Matlab命令行的同样的语句。
例如,创建一个文件含有这五行
A=[...
16.03.02.013.0
5.010.011.08.0
9.06.07.012.0
4.015.014.01.0];
用一个后缀名为.m的dule.m名字保存该文件。
在命令窗口
>>dule%读出该文件并产生一个变量A,含有我们的矩阵示例。
A=
163213
510118
96712
415141
Matlab与MicrosoftWord(Windows)关联
notebook%开启Word新文档,并提示Matlab此后自动作为服务器
notebook('filename')%开启名为filename的Word文档,如filename不在当前路径,则应加入文件的全路径。
notebook('-setup')%创建Matlab与MicrosoftWord接口,命令窗口将显示创建成功与否信息。
利用Notebook可以在word环境下操作Matlab。
其产生的文件称为M-book,可包含固定的文本、Matlab命令和Matlab的输出。
Notebook的功能在于:
使用户能在Word环境中“随心所欲地享用”MATLAB的浩瀚科技资源,为用户营造融文字处理、科学计算、工程设计于一体的完美工作环境。
M-book.dot模板的外形和使用方法,几乎与普通Word模板Normal.dot完全相同。
因此,在M-book中,文字、图象、表格、数学公式等的输入、排版、编辑方法,与在普通Word文档没有什么区别。
在Notebook中,凡参与Word和Matlab之间信息交换的部分,就称之谓“Cells(Cellgroup)”。
由M-book送向Matlab的指令,称为(Inputcells);由Matlab返回M-book的计算结果,称为(Outputcells)。
较之普通Word,Notebook最宝贵的东西就是Inputcells(group)。
从应用上讲,学会其创建和运行,就意味着掌握了Notebook。
Cells(group)创建、正确运行的两个基本操作:
Ø以普通文本形式输入的必须是MATLAB指令。
特别注意:
标点符号必须是在英文状态下输入的。
Ø不管文本形式的一条指令有多长,不管一行有多少条文本形式指令,不管有多少行文本形式指令,只要能用鼠标把它们同时“点亮”选中,那么可以被创建或运行,具体如下:
(A)在文本内容“点亮”后,按组合键[Ctrl-Enter],或选中下拉菜单项{EvaluateCell},那么被“点亮”部分就被激活成Inputcells(group),文字颜色将呈现为象征生命的绿色。
与此同时,细胞所含指令被送进Matlab运行,最后在该Cell的下方嵌入计算结果(数据或图形)。
这就是输出细胞,它的文字用蓝色显示。
(B)在文本内容“点亮”后,按组合键[Alt-D],或选中下拉菜单项{DefineInputCell},那么被“点亮”
部分只是变成了Inputcells(group),没被送去运行,当然也就没有运行结果。
【练习3】利用notebook功能在Word环境下,在一张图上画出一个周期内的单位幅值正弦、余弦图。
课题二Matlab数学计算
1、简单的计算
为易于学习,本节以算例算例归纳一些MATLAB最基本的规则和语法结构。
【例1】求[12+2×(7-4)]÷32的算术运算结果。
用键盘在Matlab指令窗中输入以下内容或在M-book中
(12+2*(7-4))/3^2
ans=
2
变量命名规则
✧变量名、函数名是对字母大小写敏感的。
如变量myvar和MyVar表示两个不同的变量。
sin是Matlab定义的正弦函数名,但SIN,Sin等都不是。
✧变量名的第一个字符必须是英文字母,最多可包含63个字符(英文、数字和下连符)。
如myvar201是合法的变量名。
✧变量名中不得包含空格、标点、运算符,但可以包含下连符。
如变量名my_var_201是合法的,且读起来更方便。
【例2】运用以下指令,以便初步了解预定义变量。
本例演示:
预定义变量已经存在的事实;
formatlong
realmax
ans=
1.797693134862316e+308
realmin
ans=
2.225073858507201e-308
pi
ans=
3.141592653589793
多项式的表示方法和运算
【例3】p(x)=x3-3x-5可以表示为p=[10-35],求x=5时的值用
p=[10-35];
polyval(p,5)%polyval(p,a)
ans=
115
也可以求向量:
a=[345];polyval(p,a)
ans=
2357115
求多项式的根
【例4】求x4-5x2+6的根
p=[10-506];
x=roots(p)%roots(p),p为多项式的系数向量,求得的根返回向量x。
x=
-1.7321
-1.4142
1.7321
1.4142
反过来,已知多项式的根,求该多项式用函数poly(x)
G=poly(x)
G=
1.00000.0000-5.0000-0.00006.0000
多项式乘法(执行两个数组的卷积)
【例5】求(x3+4x-1)×(x2+8)
x1=[104-1];x2=[108];
relt=conv(x1,x2)%conv(x1,x2)的逆运算是deconv(x1,x2)即多项式除法,返回商式及余式
relt=
1012-132-8
x_2=deconv(relt,x1)
[Qr]=deconv(x1,x2)
x_2=
108
Q=
10
r=
00-4-1
【练习1】1)求多项式3y4+2y2-8y-56,y=2.1的值。
2)求(x4+5x2-1)×(x2-x+9)
面向复数设计的运算是MATLAB特点之一。
MATLAB的所有运算都是定义在复数域上的。
这样设计的好处是:
在进行运算时,不必像其他程序语言那样把实部、虚部分开处理。
为描述复数,虚数单位用预定义变量i或j表示。
复数z=a+bj=rejθ直角坐标表示和极坐标表示之间转换的MATLAB指令如下:
real(z)给出复数z的实部a=rcosθ。
imag(z)给出复数z的虚部b=rsinθ。
abs(z)给出复数z的模
angle(z)以弧度为单位给出复数z的幅角
【例6】图示复数z=3+4j,z=1+2j的和
z1=4+3*j;z2=1+2*j;
z12=z1+z2
%以下用于绘图
clf,holdon%clf清空图形窗。
逗号用来分隔两个指令。
plot([0,z1,z12],'g','LineWidth',3)
plot([0,z12],'-r','LineWidth',3)
plot([z1,z12],'s','MarkerSize',8)
holdoff,gridon,
axisequal
axis([0,6,0,6])
text(3.5,2.3,'z1')
text(5,4.5,'z2')
text(2.5,3.5,'z12')
xlabel('real')
ylabel('image')
shg
z12=
5.000000000000000+5.000000000000000i
【练习2】用Matlab计算
。
本例证实:
Matlab运算定义是在复数域的实质。
a=-8;
r_a=a^(1/3)
r_a=
1.0000+1.7321i
解答
%先构造一个多项式(p(r)=r3+a)
p=[1,0,0,-a];%p是多项式p(r)的系数向量
R=roots(p)%求多项式的根
R=
-2.0000
1.0000+1.7321i
1.0000-1.7321i
用图形表示
MR=abs(R
(1));%计算复根的模
t=0:
pi/20:
2*pi;%产生参变量在0到2*pi间的一组采样点
x=MR*sin(t);
y=MR*cos(t);
plot(x,y,'b:
'),gridon%画一个半径为R的圆
%注意“英文状态逗号”在不同位置的作用
holdon
plot(R
(2),'.','MarkerSize',30,'Color','r')%画第一象限的方根
plot(R([1,3]),'o','MarkerSize',15,'Color','b')%画另两个方根
axis([-3,3,-3,3])%保证屏幕显示呈真圆
holdoff
可见对复数进行方根运算时,Matlab只给出处于“第一象限”的那个根。
2、数组运算面向数组设计的运算——MATLAB特点之二
在MATLAB中,标量数据被看作(1×1)的数组(Array)数据。
所有的数据都被存放在适当大小的数组中。
为加快计算速度(运算的向量化处理),MATLAB对以数组形式存储的数据设计了两种基本运算:
一种是所谓的数组运算;另一种是所谓的矩阵运算。
【例4】对复数数组
进行求实部、虚部、模和幅角的运算。
本例演示:
复数数组的生成;MATLAB指令对数组元素"并行操作"的实质。
(1)创建复数数组
AR=[1,3;2,4]%数组标识符"[]”;元素分隔符空格或逗号“,”;数组行间分隔符分号";”
AI=[5,7%或"回车"符用来分隔数组中的行。
6,8]
A=AR-AI*i%形成复数矩阵
AR=
13
24
AI=
57
68
A=
1.0000-5.0000i3.0000-7.0000i
2.0000-6.0000i4.0000-8.0000i
(2)求复数数组的实部和虚部
A_real=real(A)
A_image=imag(A)
A_real=
13
24
A_image=
-5-7
-6-8
(3)求复数数组中各元素的模和幅角
Am2=abs(A)
Aa2=angle(A)*180/pi%以度为单位计算幅角
Am2=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 实训课