MATLAB矩阵与绘图.docx
《MATLAB矩阵与绘图.docx》由会员分享,可在线阅读,更多相关《MATLAB矩阵与绘图.docx(21页珍藏版)》请在冰点文库上搜索。
MATLAB矩阵与绘图
实验一、MATLAB矩阵与绘图
一、实验目的及要求
1.熟悉MATLAB语言环境
2.练习MATLAB命令的矩阵和基本绘图操作
二、实验内容
习题1:
用文字或命令演示结果说明以下函数的意义who,whos,help,lookfor,demos,clc,clf,clear,contro-c(^c)
程序:
x=1:
50;
>>y=2*x+1;
>>plot(x,y,'*')
演示1:
>>who
Yourvariablesare:
xy
演示2:
>>whos
NameSizeBytesClass
x1x50400doublearray
y1x50400doublearray
Grandtotalis100elementsusing800bytes
演示3
Help再加所要查询的语句,将会出现其详细的用法和它的应用举例,下面是运行结果的一部分:
(help是在确知你所要查询的情况下)
>>helpplot
PLOTLinearplot.
PLOT(X,Y)plotsvectorYversusvectorX.IfXorYisamatrix,
thenthevectorisplottedversustherowsorcolumnsofthematrix,
whicheverlineup.IfXisascalarandYisavector,length(Y)
disconnectedpointsareplotted.
PLOT(Y)plotsthecolumnsofYversustheirindex.
IfYiscomplex,PLOT(Y)isequivalenttoPLOT(real(Y),imag(Y)).
InallotherusesofPLOT,theimaginarypartisignored.
Variouslinetypes,plotsymbolsandcolorsmaybeobtainedwith
PLOT(X,Y,S)whereSisacharacterstringmadefromoneelement
fromanyorallthefollowing3columns:
bblue.point-solid
ggreenocircle:
dotted
rredxx-mark-.dashdot
ccyan+plus--dashed
mmagenta*star
yyellowssquare
kblackddiamond
vtriangle(down)
^triangle(up)
>triangle(right)
ppentagram
hhexagram
等等…
演示4:
如果查询一个不知其函数名称的函数用法与功能,help不能完成此功能,lookfor可以根据相关的关键字来查询相关的函数,演示如下:
SS2TFState-spacetotransferfunctionconversion.
TF2SSTransferfunctiontostate-spaceconversion.
TF2ZPTransferfunctiontozero-poleconversion.
TFCHKCheckforpropertransferfunction.
ZP2TFZero-poletotransferfunctionconversion.
MATQDLGWorkspacetransferdialogbox.
DTF2SSDiscretetransferfunctiontostate-spaceconversion.
SFUNTFanS-functionwhichperformstransferfunctionanalysisusingffts.
OCT2GENConvertanoctalformoftransferfunctionintoabinaryone.
SIM2GENConvertsaSimulinkblockdiagramtoconvolutioncodetransferfunction.
sim2gen2.m:
%SIM2GENConvertsaSIMULINKblockdiagramtoconvolutioncodetransferfunction.
SIM2TRANConvertsaSimulinkblockdiagramtoconvolutioncodetransferfunction.
FILTDSP-orientedspecificationofdiscretetransferfunctions.
上述也只是程序的一部分。
演示5:
demos
演示6:
clc运行后会将命令窗口的所有内容删除,但变量窗口等的数据依然存在。
演示7:
clear运行后,workplace中内容全部清空。
演示8:
clf是清除绘图窗口中的内容。
演示9:
contro-c(^c)
:
习题2:
已知矩阵
,
1)求A的逆矩阵;
2)已知A*x=B,求x;
3)显示命令A(4,[2,4]),A(2:
end,3)的输出结果,并用类似取地址的命令从A矩阵中取出矩阵
,
,
并计算C*D,C.*D,C*E,C*8。
解答:
A=[3,4,-7,-12;5,-7,4,2;1,0,8,-5;-6,5,-2,10]
B=[4;-3;9;-8;]
1)求A的逆矩阵;
>inv(A)
ans=
0.28400.39640.13230.3277
0.22130.20430.16870.3090
0.00210.04030.12040.0547
0.06020.14370.01910.1530
2)已知A*x=B,求x;
x=inv(A)*B,程序及运行结果如下:
>>x=inv(A)*B
x=
-1.4841
-0.6816
0.5337
-1.2429
3)①>>A(4,[2,4])
ans=
510
②>>A(2:
end,3)
ans=
4
8
-2
③>>C=A(1:
3,2:
4)
C=
4-7-12
-742
08-5
④>>D=A(2:
4,1:
3)
D=
5-74
108
-65-2
⑤>>E=A([134],[12])
ans=
34
10
-65
⑥>>C*D
ans=
85-88-16
-43590
38-2574
>>C.*D
ans=
2049-48
-7016
04010
>>C*E
ans=
77-44
-29-18
38-25
>>C*8
ans=
32-56-96
-563216
064-40
习题3:
求多项式的根.
a=[10250];
b=[1-3446];
c=conv(a,b)
roots(c)
运行结果:
c=
1-3471-85011500
ans=
0
32.5885
-0.0000+5.0000i
-0.0000-5.0000i
1.4115
习题4:
对数组x=[0:
0.1:
2.5],y=[00.112460.22270.328630.428390.52050.603860.67780.74210.796910.84270.880210.910310.934010.952290.966110.976350.983790.989090.992790.995320.997020.998140.998860.999310.99959];进行5阶多项式拟合,并绘制出拟合曲线和原始的采样点。
参考函数:
roots,poly,conv,polyval,polyfit
程序:
x0=[0:
0.1:
2.5];
y0=[00.112460.22270.328630.428390.52050.603860.67780.74210.796910.84270.880210.910310.934010.952290.966110.976350.983790.989090.992790.995320.997020.998140.998860.999310.99959];
n=5;
p=polyfit(x0,y0,n)
%xx=0:
0.01:
1;
yy=polyval(p,x0)
plot(x0,yy,'o',x0,y0),xlabel('x')
运行结果:
p=
-0.03520.2435-0.51010.00731.1378-0.0007
习题五
习题5:
认真观察以下图形线性、标注、坐标轴、栅格等特点,写出绘制该图形的命令
程序:
x=0:
pi/10:
2*pi;
y1=(sin(2*x)).^2;
y2=0.5*cos(2*x).*sin(2*x);
y3=2*sin(x)+cos(x);
y4=y1+y2+y3;
subplot(2,2,1),plot(x,y2,':
g',x,y2,'*g'),ylabel('y2'),gridon,axis([0,7,-0.3,0.3]),title('y2=0.5cos(2x)sin(2x),0:
pi/10:
2*pi');
subplot(2,2,2),plot(x,y1,x,y3),axis([0,10,-4,4]),gtext('y1=sin((2*x).^2)');gtext('y3=2*sin(x)+cos(x)');
subplot(2,2,3),plot(x,y1,':
r',x,y3,'o:
g'),axis([0,10,-4,4]),legend('y1=sin((2*x).^2)','y3=2*sin(x)+cos(x)');
subplot(2,2,4),stairs(y4),axis([0,25,-3,3]),title('y4=y1+y2+y3;(用stairs函数绘图)'),gtext('需要用axis调整坐标轴范围')
图形:
1、用ones和diag函数生成下列矩阵
(1)
程序:
clear;
clc;
A=ones(7);
A(2:
6,2:
6)=3;
A(3:
5,3:
5)=5;
A(4,4)=7;
A
结果:
A=
1111111
1333331
1355531
1357531
1355531
1333331
1111111
(2)
程序:
clear;
clc;
B0=[44444];
B1=[0];
B2=[00];
B3=[222];
B4=[3333];
B5=[5555];
B6=[666];
V0=diag(B0,0);
V1=diag(B1,-4);
V2=diag(B2,-3);
V3=diag(B3,-2);
V4=diag(B4,-1);
V5=diag(B5,1);
V6=diag(B6,2);
V7=diag(B2,3);
V8=diag(B1,4);
V=V0+V1+V2+V3+V4+V5+V6+V7+V8
运行结果:
V=
45600
34560
23456
02345
00234
2、已知矩阵A=
,求矩阵的转置,逆矩阵,矩阵的秩、矩阵的行列式,矩阵的三次幂,矩阵的特征值和特征向量。
已知矩阵B=
,求矩阵A和B的矩阵乘积和数组乘积。
A=[1,8,7;2,9,6;3,4,5]
B=[8,8,4;4,4,5;1,1,1]
A'
ans=
123
894
765
>>inv(A)
ans=
-0.43750.25000.3125
-0.16670.3333-0.1667
0.3958-0.41670.1458
>>rank(A)
ans=
3
>>det(A)
ans=
-48
>>A^3
ans=
52416361364
57417851482
39612081012
>>[vd]=eig(A)
v=
-0.6041-0.89180.0739
-0.6587-0.0824-0.6523
-0.44840.44490.7543
d=
14.918400
0-1.75340
001.8350
矩阵乘积:
A*B
ans=
474751
585859
454537
数组乘积:
>>A.*B
ans=
86428
83630
345
3、使用randn命令创建一个5*6的数组,
1)寻找该数组中大于0的元素,并将这些元素重新赋值为1;
2)求各列的平均值和方差。
求全体元素的平均值和方差。
>a=randn(5,6)
a=
-0.43261.1909-0.18670.11390.29440.8580
-1.66561.18920.72581.0668-1.33621.2540
0.1253-0.0376-0.58830.05930.7143-1.5937
0.28770.32732.1832-0.09561.6236-1.4410
-1.14650.1746-0.1364-0.8323-0.69180.5711
>>a(find(a>0))
ans=
0.1253
0.2877
1.1909
1.1892
0.3273
0.1746
0.7258
2.1832
0.1139
1.0668
0.0593
0.2944
0.7143
1.6236
0.8580
1.2540
0.5711
>>a(find(a>0))=1
a=
-0.43261.0000-0.18671.00001.00001.0000
-1.66561.00001.00001.0000-1.33621.0000
1.0000-0.0376-0.58831.00001.0000-1.5937
1.00001.00001.0000-0.09561.0000-1.4410
-1.14651.0000-0.1364-0.8323-0.69181.0000
>>mean(a)
ans=
-0.24890.79250.21770.41440.1944-0.0069
>>mean(mean(a))
ans=
0.2272
>>var(a)
ans=
1.49150.21530.54060.71081.26871.9040
>>var(var(a))
ans=
0.407
4、列出5种变量初始化的方法。
⑴逐个元素输入法
>>b=[001589]
b=
001589
⑵冒号生成法
>>b=0:
0.5:
3
b=
00.50001.00001.50002.00002.50003.0000
⑶定数线性采样法
>>b=linspace(0,10,10)
b=
01.11112.22223.33334.44445.55566.66677.77788.888910.0000
(4)用单下标方式给矩阵赋值:
>>a=[1,2,3;5,8,9]
a=
123
589
>>a(5:
6)=[1010]
a=
1210
5810
⑸用全下标标识给矩阵元素赋值
>>a=[189;462]
a=
189
462
>>a(3,3)=5
a=
189
462
005
5、已知向量x=[12345],y=[711131519]。
试着分别用线性插值法和三次多项式插值法求x=1.3,2.4和4.8时所对应的y值。
⑴.三次多项式插值法:
x=[12345];
y=[711131519];
xi=[1.3,2.4,4.8];
yi=interp1(x,y,xi,'cubic');
plot(xi,yi,'-b',x,y,'.r','markersize',20),xlabel('x');
⑵线性插入法
程序:
clear
clc
x=[12345]
y=[711131519]
p1=polyfit(x,y,1)
p3=polyfit(x,y,3)
y1=polyval(p1,1.3)
y2=polyval(p1,2.4)
y3=polyval(p1,4.8)
z1=polyval(p3,1.3)
z2=polyval(p3,2.4)
z3=polyval(p3,4.8)
运行结果:
x=
12345
y=
711131519
p1=
2.80004.6000
p3=
0.3333-3.000010.6667-1.0000
y1=
8.2400
y2=
11.3200
y3=
18.0400
z1=
8.5290
z2=
11.9280
z3=
17.9440