Matlab基础及应用实验指导书.docx
- 文档编号:23985922
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:25
- 大小:28.24KB
Matlab基础及应用实验指导书.docx
《Matlab基础及应用实验指导书.docx》由会员分享,可在线阅读,更多相关《Matlab基础及应用实验指导书.docx(25页珍藏版)》请在冰豆网上搜索。
Matlab基础及应用实验指导书
Matlab基础及应用实验指导书
实验一Matlab的基本操作
实验目的:
掌握Matlab的基本操作方法
实验内容:
1、使用变量与基本运算;
2、向量与矩阵的处理;
3、程序流程控制;
4、M文件编辑。
参照教材相关内容
向量生成:
x=linspace(0,2*pi);
y=sin(x);
plot(x,y)
plot(x,sin(x),'o',x,cos(x),'x',x,sin(x)+cos(x),'*');
数据导入
1. 菜单File—Import—Data,支持Excel、txt等;
2. 在Workspace窗口中双击数据表名,在ArrayEditor中将数据复制进去即可。
绘图
1 将数据表的各列数值分别赋予变量x、y、z等,格式如下:
x=sheetname(:
1),y=sheetname(:
2),z=sheetname(:
3);
2 用命令plot(x,y,’XXXX’)绘制图形,单引号中的符号表示点线的属性,如线形、颜色、点的形状等,若用双对数坐标画图则命令为loglog(x,y);
3 在弹出的绘图界面中用菜单View—PropertyEditor编辑图形属性,如字体大小、数据点形状、横纵坐标名称、绘图区域颜色等;
4 绘图方法2:
在数组编辑器上点击PlotSelection按钮,选择图形的类型即可;
5 绘图方法3:
菜单File—New—Figure创建新的图形,在图形编辑器中FigurePalette面板点击2DAxes,点击右下角AddData选择图表类型和坐标轴的数据源,度分布图将坐标轴由线形改为对数即可。
6 holdon/off命令:
叠绘命令,切换绘图的保持功能;
7 绘制双纵轴:
7.1 plotyy(x1,y1,x2,y2):
分别用左/右侧y轴表示两条曲线;
7.2 plotyy(x1,y1,x2,y2,FUN):
FUN是字符串格式,用来指定绘图的函数名,可以由多个。
8 创建子图:
subplot(m,n,p):
表示将绘图区域分为m*n个矩形块,分别创建坐标系,如
>>subplot(1,2,1);loglog(x,y);
>>subplot(1,2,2);loglog(m,n);
表示在图形中创建两个子图,左右排列,分别绘制双对数坐标图,变量分别是x、y和m、n。
曲线拟合
1. 简单拟合:
图形编辑器中菜单Tools—BasicFitting,选择拟合函数,点击右下方的向右箭头可显示拟合曲线的方程;
2. 拟合工具:
Start—Toolboxes—CurveFitting—CurveFittingTool,上方的一排按钮中Data用于选择数据源,Fitting用于拟合(先点NewFit,然后选择拟合曲线,如果没有的话可以选CustomEquations,点击右边的Newequation按钮,在弹出的对话框中输入想要拟合的曲线方程,选好后点击Apply即可,下方的Results中显示拟合结果,包括公式和R2),Exclude用于定制排除策略,Plotting用于选择绘图的数据,Analysis分析结果。
3. 绘制幂律度分布的拟合曲线,一般采用先把数据点绘制上去,holdon,在Excel中求出拟合直线的方程,然后在Matlab中生成直线,并绘制到源数据上。
数组的创建
1. 直接输入:
用空格、逗号或分号隔开,如A1=[3 0.5*pi 10 7.5];
2. 步长生成法:
x=a:
anc:
b,即a为起始值,b为终止值,inc为间隔步长,如A2=0:
0.3:
2=0,0.3,0.6,0,9,1.2,1.5,1.8;
3. 等间距线形生成法:
x=linspace(a,b,n),即a到b之间得到n个线形采样点,如A3=linspace(1,6,3)=1,3.5,6;
4. 等间距对数生成法:
x=logspace(a,b,n),即a到b之间得到n个对数采样点,如A4=logspace(1,6,6)=10,102,103,104,105,106.
数组的访问
1. 索引直接访问:
数组名(序号);
2. 访问一块数据:
数组名(起始序号:
终止序号);
3. 访问最后一部分数据:
数组名(起始序号:
end);
4. 构造访问数组:
数组名(起始序号,间隔序号,终止序号);
5. 直接构造访问数组:
数组名([序号……])。
实验二二维、三维绘图
实验目的:
掌握二维、三维绘图命令
实验内容:
1、二维绘图命令;
2、三维绘图命令;
3、动画制作。
代表性命令:
y=peaks;
plot(y);
x=peaks;
[x,y]=meshgrid(-2:
0.2:
2,-1:
0.1:
1);
z=x.*exp(-x.^2-y.^2);
[u,v,w]=surfnorm(x,y,z);
quiver3(x,y,z,u,v,w);
holdon,surf(x,y,z);holdoff
x=linspace(0,2*pi);
loglog(x,sin(x))
semilogx(linspace(0,2*pi),sin(x))
semilogy(linspace(0,2*pi),sin(x))
plotyy(linspace(0,2*pi),sin(x),linspace(0,2*pi),2*cos(x))
help指令
x=linspace(0,2*pi);
plotyy(x,sin(x),x,3*cos(x))
x=linspace(0,8*pi);
semilogx(x,sin(x));
x=linspace(0,2*pi);
y1=sin(x);
y2=exp(-x);
plotyy(x,y1,x,y2);
x=0:
0.5:
4*pi;
y=sin(x);
plot(x,y,'k:
diamond')
k代表黑色
其他bcgrwy
make:
o+x*.^<>squarepentagram给图形加上标示
x=0:
0.1:
4*pi;
subplot(2,2,1);plot(x,sin(x));
subplot(2,2,2);plot(x,cos(x));
subplot(2,2,3);plot(x,sin(x).*exp(-x/5));
subplot(2,2,4);plot(x,x.^2);
t=0:
0.1:
2*pi;
x=3*cos(t);
y=sin(t);
subplot(2,2,1);plot(x,y);axisnormal默认长宽比
subplot(2,2,2);plot(x,y);axissquare长宽比是1
subplot(2,2,3);plot(x,y);axisequal两轴比例一致
subplot(2,2,4);plot(x,y);axisequaltight两轴比例一致图轴贴近图形
精确图形绘制
fplot('sin(1/x)',[0.02,0.2]);
theta=linspace(0,2*pi);
r=cos(4*theta);
polar(theta,r);
theta=lispace(0,2*pi,50);
rho=sin(0.5*theta);
[x,y]=pol2cart(theta,rho);
compass(x,y);
三维绘图
x=linspace(-2,2,25);
y=linspace(-2,2,25);
[xx,yy]=meshgrid(x,y);
zz=xx.*exp(-xx.^2-yy.^2);
mesh(xx,yy,zz);
surf(xx,yy,zz);
立体图形测试
peaks
[x,y,z]=peaks;
meshc(x,y,z);
waterfall(x,y,z);
meshc(x,y,z);
surfc(xx,yy,zz);
t=linspace(0,20*pi,501);
plot3(t.*sin(t),t.*cos(t),t);三维曲线
试用以下指令:
ezsurfc
surfl
ezplot3
contour3
mesh(,x,y,z);
hiddenoff
axistight
曲面颜色控制
peaks;
colorbar;表示数字的颜色比如高度
peaks;
shadinginterp
shadingflat;
shadingfaceted
surfl(peaks);
axistight
colormap(pink);
shadinginterp
指令使用不明白的比如可以使用hlepplot了解plot的用法
[x,y]=meshgrid(-2:
0.2:
2,-1:
0.1:
1);
z=x.*exp(-x.^2-y.^2);
[u,v,w]=surfnorm(x,y,z);
quiver3(x,y,z,u,v,w);画向量场图
holdon,surf(x,y,z);holdoff
等高线
z=peaks
contour(z,30)30是指定画30条等高线
[x,y,z]=peaks;
contour3(x,y,z,30)
meshc(x,y,z)
容积可视化的演示:
volvec可以点击各个命令演示
图象显示
loadclown
image(x);
colormap(map);
x=imread('ngc6543a.jpg');
image(x)
[A,xy]=bucky;
gplot(A,xy,'-o');
axisequal
产生动画的命令:
lorenztrusstravelfitdemospinnerxphide
onecartdblcart1simppenddblpend1dblpend2penddemo
fcmdemojugglerinvkineslcp1slcpp1slbbsltbu
实验三变量与数据结构
实验目的:
掌握Matlab的变量与数据结构
实验内容:
1、矩阵的处理与运算;
2、多维数组;
3、结构数组。
代表性命令:
参照教材
一些特殊矩阵:
zeros(m,n)ones(m,n)eye(n)magic(n)
逆矩阵运算:
a=pascal(4);
b=inv(a);
a*b
这次学习矩阵的一些基本操作,包括转置,幂运算,求逆,求秩等.
如果有高等代数的知识,这些都可以用手工的方法求得,在解线性代数方面不管是理论上还是实践上都是帮助很大的.其实,不管是什么学科,矩阵都是相当重要的数学工具,用二维矩阵很有直观性,能直接说明问题.所以学好矩阵是很重要的.
(1)矩阵转置
>>A=magic(3)
A=
8 1 6
3 5 7
4 9 2
>>A'
ans=
8 3 4
1 5 9
6 7 2
用简单的'来表示转置.magic是魔方生成命令,参数为几次.
(2)幂运算
如:
>>A^3
ans=
1197 1029 1149
1077 1125 1173
1101 1221 1053
A^3,即(A*A*)A,非各元素3次方。
要注意的是矩阵相乘对行列有要求,而且并非所有的矩阵都是可交换的.有些矩阵不能交换,即AB不等于BA.
(3)矩阵与常数间运算,常数与矩阵各元素之间进行运算。
如:
>>10*A
ans=
80 10 60
30 50 70
40 90 20
A+1,表示A中每个元素加1;
2*A,表示A中每个元素乘以2;
A/3,表示A中每个元素除以3(常数通常只能做除数).
(4)矩阵的逆运算,这在解低阶线性方程时经常用到,还有一些如最小二乘法等也要用到.
inv(A)
>>inv(A)
ans=
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028
注意的是并非所有矩阵都有逆,可逆的充要条件是行列式值为非0数.手工求逆也是很常用到的,在考试或问题较小时经常要手工求.基本思路是对原矩阵右边接上一个单位矩阵然后进行"行"(这很重要,一定要行,不是列!
)变换,就是执行下面的过程:
8 1 6 1 0 0
3 5 7 0 1 0
4 9 2 0 0 1
1.0000 0 0 0.1472 -0.1444 0.0639
0 1.0000 0 -0.0611 0.0222 0.1056
0 0 1.0000 -0.0194 0.1889 -0.1028
右边的那部分就是逆了,你可以发现它和inv(A)是一样的.
(5)行列式,求行列式也是很常见的,在数学分析中求雅可比式,判断线性方程是否有唯一的解时都要用到.
det(A)
>>det(A)
ans=
-360
(6)求秩函数,如果对线性代数不甚了解,这个概念可能要复杂一点,不那么直观,因为涉及到向量相关的问题,我就不在这里多说,想深入了解请查看有关的线性代数的书.
rank(A)
>>rank(A)
ans=
3
(7)求迹函数,就是求对角线元素的和,主要是对方阵,如果不是方阵也可以得一个结果,但那是notintersting.
trace(A)
>>trace(A)
ans=
15
(8) 指数运算和对数运算,这个比较少用到.在解常微分方程时经常要求这个东西.
expm(A),就是:
e^A.
logm(A).
(9) 开方运算,可以对矩阵进行平方分解,一般在矩阵分析上用到.
sqrtm(A).
以上三个函数都是在基本函数后面加了个m,如:
exp--->expm,log--->logm,方便记忆.
一些技巧:
1)可以用键盘右边的上下箭头来快速定位到已经用过的命令,像DOS下一样.如果知道上次命令的首字母或者前几字母,可以选打进去,然后用箭头上翻.
2)多查看帮助,经常有人抱怨说看不懂英文,其实里面数学的东西太多,要很专业的才能完全理解,作为一般人,不用细究,只要依样画葫芦就可以了.
3)矩阵很重要!
不管你学什么,如果你学管理,你会发现里面有支付矩阵,虽然它没有很严格的数值意义;如果你对统计感兴趣,你会发现很多复杂的公式原来可以用矩阵来简单表示的
特殊矩阵的生成
(1)空阵,即空矩阵
不包含任何元素,但非“不存在”.这在矩阵操作中有很有用处的,下面会给出一个例子.
利用空阵缩维的例子:
>>A=[1,2,3;4,5,6]
A=
1 2 3
4 5 6
>>A(:
[1,3])=[]%把矩阵a的第1,3列去掉,这样很直接比起用循环或者其他方式快多了!
A=
2
5
顺便说一下对矩阵一些特定行或列的提取,这在之前的文章中有提到过:
A(1,:
)——A的第1行,当然1可以换成其他的数,如果有的话.
A(:
2)——A的第2列
A(:
:
) ——A本身;
A(:
)——A所有元素按列排成的列向量,注意是按列序来排的;
(2)常用工具矩阵
全零矩阵
zeros(N) ——生成N×N的全零矩阵,一般在赋初值时用到,可以避免在计算时为变量开辟新的内存;
>>zeros(3)
ans=
0 0 0
0 0 0
0 0 0
zeros(M,N) ——生成M×N的全零矩阵,作用同上.
zeros(size(A)) —— 与A相同大小,注意size(A)是计算矩阵A的行和列,结果为[r,c];
>>zeros(size(A))
ans=
0
0
单位矩阵,作用同全零矩阵是一样的,不重复注释说明;
eye(N)
>>eye(4)
ans=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
eye(M,N)
eye(size(A))
全一阵,即一个矩阵的所有元素都是1,这在赋初值时很有用;
ones(N)
ones(M,N)
>>ones(2,4)
ans=
1 1 1 1
1 1 1 1
ones(size(A))
随机矩阵,注意生成的数据都为0到1之间,如果要想为整数,则可以另外处理,下面将介绍:
rand(N)
rand(M,N)
rand(size(A))
rand ——生成随机数,为一个数,也是在0与1之间.
>>rand(3)
ans=
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
如果要得到整数,如0到100之间,则可以对原来0到1之间的数乘上100然后取整:
>>r=round(100*rand(3))%round是向原点取整,即取最靠近原点的整数.如round(3.3)=3;round(-3.3)=-3.
r=
44 92 41
62 74 94
79 18 92
上面介绍的方法都是最实用的方法,如果真正要编写程序,很多时候都要用到
矩阵的一些特殊操作
1)矩阵的抽取,在矩阵处理中,经常要用到对矩阵部分元素的提取,如对角线,某一列或一行,或者上三角,下三角提取等等.
对角元素抽取,即矩阵的对角线,包括主对角线和非主对角线:
diag(A),其语法如下.
a=diag(A,k)
k=0 主对角线,当k=0时,也不可以不加此参数;
k>0,上方第k条对角线;
k<0,下方第(-k)条对角线;
>>A=magic(3)
A=
8 1 6
3 5 7
4 9 2
>>a=diag(A)
a=
8
5
2
>>b=diag(A,1)
b=
1
7
>>c=diag(A,-1)
c=
3
9
diag命令不仅可以对已知矩阵进行对角线的抽取,也可以根据已知对角线来构造对应的矩阵.参数是一样的.
X=diag(v,k)——向量v为矩阵X的第k条对角线
X其余元素为0
X=diag(v,0) 当k=0时,可以省去不写,效果与diag(v)一样.
>>X=diag(a)
X=
8 0 0
0 5 0
0 0 2
>>Y=diag(a,1)
Y=
0 8 0 0
0 0 5 0
0 0 0 2
0 0 0 0
上三角阵、下三角阵的抽取
X=tril(A) 提取A的主下三角部分,X其余元素为0
X=tril(A,k) 提取A的第k条对角线(含)以下部分,X其余元素置为0.
X=triu(A) 提取A的主上三角部分,X其余元素为0
X=triu(A,k) 提取A的第k条对角线(含)以上部分,X其余元素置为0.
记忆这个命令是按英文缩写来记的,tri是triple的前三字母,为三的,这类单词很多,常见的有三角形:
triangle.
而l则为:
low,u则为up.这样记就可以很快记住这个命令.
>>X=tril(A)
X=
8 0 0
3 5 0
4 9 2
>>X=tril(A,-1)
X=
0 0 0
3 0 0
4 9 0
2)矩阵的扩展
利用小矩阵进行组合,可以组成大的矩阵,在矩阵分块中应用较多,有些时候把一些分散的数据合成一个大矩阵便于分析和计算也要进行小矩阵的组合.可以利用对矩阵标识块的赋值命令来实现矩阵的合并.
>>v=[1 2 6 20];
>>a1=[-v(2:
4);eye
(2),zeros(2,1)]
a1=
-2 -6 -20
1 0 0
0 1 0
对上述结果的说明:
-v(2:
4)为提取v的第二到第四列,然后加负号;
eye
(2)生成2X2单位阵,此命令在前面的教程有所介绍.
zeros(2,1)为生成2X1的全0矩阵.
>>a2=-v(2:
4);a2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 基础 应用 实验 指导书