第2章MATLAB作图方法详解.docx
《第2章MATLAB作图方法详解.docx》由会员分享,可在线阅读,更多相关《第2章MATLAB作图方法详解.docx(24页珍藏版)》请在冰豆网上搜索。
第2章MATLAB作图方法详解
第2章MATLAB作图
本章将介绍MATLAB的作图功能并对MATLAB的图形特性进行阐述。
这里所阐述的很多功能都是既可以用命令窗口函数来自动实现,也可以使用图形窗口中的工具栏或菜单来实现。
2.1平面图
2.1.1曲线图
Matlab作图是通过描点、连线来实现的,故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标和纵坐标),然后将该点集的坐标传给Matlab函数画图.
命令为:
plot(X,Y,S)
X,Y是向量,分别表示点集的横坐标和纵坐标,s-为指定颜色、线型等。
如表1所示
表2.1图形元素设定
plot(X,Y)--画实线.
plot(X,Y1,S1,X,Y2,S2,…,X,Yn,Sn)--将多条线画在一起。
例在[0,2*pi]用红线画sin(x),用绿圈画cos(x)。
解程序:
x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,'r',x,z,'go')
结果:
2.1.2符号函数(显函数、隐函数和参数方程)画图
(1)ezplot
ezplot('f(x)',[a,b])
表示在aezplot('f(x,y)',[xmin,xmax,ymin,ymax])
表示在区间xminezplot('x(t)','y(t)',[tmin,tmax])
表示在区间tmin例在[0,pi]上画y=sin(x)的图形
解输入命令
ezplot('sin(x)',[0
例在[0,2*pi]上画
,
星形图。
解输入命令
ezplot('cos(t)^3','sin(t)^3',[0,2*pi])
例在[-2,0.5],[0,2]上画隐函数
的图像。
解输入命令
ezplot('exp(x)+sin(x*y)',[-2,0.5,0,2])
(2)fplot
fplot('fun',lims)
表示绘制字符串fun指定的函数在lims=[xmin,xmax]的图形。
注意:
[1]fun必须是M文件的函数名或是独立变量为x的字符串。
[2]fplot函数不能画参数方程和隐函数图形,但在一个图上可以画多个图形。
例在[-1,2]上画
的图形。
解先建M文件myfun1.m:
functiony=myfun1(x)
y=exp(2*x)+sin(3*x.^2);
再输入命令:
fplot('myfun1',[-1,2])
例在[-2,2]范围内绘制函数tanh的图形。
解fplot('tanh',[-2,2])
例x、y的取值范围都在[-
,
],画函数tanh(x),sin(x),cos(x)的图形。
解输入命令:
fplot('[tanh(x),sin(x),cos(x)]',2*pi*[-11])
2.2三维图
2.2.1空间曲线
(1)一条曲线
plot3(x,y,z,s)
其中x,y,z为n维向量,分别表示曲线上点集的横坐标、纵坐标、函数值。
S-指定颜色、线形等。
例在区间[0,10*pi]画出参数曲线x=sin(t),y=cos(t),z=t。
解close;t=0:
pi/50:
10*pi;
plot3(sin(t),cos(t),t)
rotate3d%旋转
结果:
(2)多条曲线
plot3(x,y,z)
其中x,y,z是都是m×n矩阵,其对应的每一列表示一条曲线。
例画多条曲线观察函数Z=(X+Y).^2。
解close;x=-3:
0.1:
3;y=1:
0.1:
5;
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
plot3(X,Y,Z)
(这里meshgrid(x,y)的作用是产生一个以向量x为行、向量y为列的矩阵)
2.2.2空间曲面
(1)surf(x,y,z)
画出数据点(x,y,z)表示的曲面,其中x,y,z为数据矩阵,分别表示数据点的横坐标、纵坐标、函数值。
例画函数Z=(X+Y).^2的图形。
解x=-3:
0.1:
3;
y=1:
0.1:
5;
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
surf(X,Y,Z)
shadingflat%将当前图形变得平滑
(2)mesh(x,y,z)
画网格曲面,其中x,y,z为数据矩阵。
分别表示数据点的横坐标、纵坐标、函数值。
例画出曲面Z=(X+Y).^2在不同视角的网格图。
解close;
x=-3:
0.1:
3;y=1:
0.1:
5;
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
mesh(X,Y,Z)
2.3图形处理
2.3.1在图形上加格栅、图例和标注
(1)gridon加格栅在当前图上;
gridoff删除格栅。
(2)hh=xlabel(string):
在当前图形的x轴上加图例string
hh=ylabel(string):
在当前图形的y轴上加图例string
hh=zlabel(string):
在当前图形的z轴上加图例string
hh=title(string):
在当前图形的顶端上加图例string
例在区间[0,2*pi]画sin(x)的图形,并加注图例“自变量X”、“函数Y”、“示意图”,并加格栅.
解x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y)
xlabel('自变量X')
ylabel('函数Y')
title('示意图')
gridon
(3)h=gtext(‘string’)
命令gtext(‘string’)用鼠标放置标注在现有的图上.运行命令gtext
(‘string’)时,屏幕上出现当前图形,在图形上出现一个交叉的十字,该十字随鼠标的移动移动,当按下鼠标左键时,该标注string放在当前十交叉的位置.
例在区间[0,2*pi]画sin(x),并分别标注“sin(x)”、”cos(x)”。
解x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,x,z)
gtext('sin(x)');gtext('cos(x)')
2.3.2定制坐标
Axis([xminxmaxyminymaxzminzmax])
定制图形坐标。
其中xminxmaxyminymaxzminzmax分别是x、y、z的最大、最小值。
Axisauto将坐标轴返回到自动缺省值。
例在区间[0.005,0.01]显示sin(1/x)的图形。
解x=linspace(0.0001,0.01,1000);
y=sin(1./x);
plot(x,y)
axis([0.0050.01-11])
2.3.3图形保持
(1)holdon保持当前图形,以便继续画图到当前图上;
holdof释放当前图形窗口。
例将y=sin(x)、y=cos(x)分别用点和线画出在同一屏幕上。
解x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,z,':
')
holdon
plot(x,y)
(2)figure(h)新建h窗口,激活图形使其可见,并把它置于其它图形之上。
例在区间[0,2*pi]新建两个窗口分别画出y=sin(x);z=cos(x)。
解请运行如下程序:
x=linspace(0,2*pi,100);
y=sin(x);z=cos(x);
plot(x,y);
title('sin(x)');
figure
(2);
plot(x,z);
title('cos(x)');
2.3.4分割窗口
h=subplot(mrows,ncols,thisplot)
划分整个作图区域为mrows×ncols块(逐行对块访问)并激活第thisplot块,其后的作图语句将图形画在该块上。
subplot(mrows,ncols,thisplot)
激活已划分为mrows×ncols块的屏幕中的第thisplot块,其后的作图语句将图形画在该块上。
subplot(1,1,1)
命令Subplot(1,1,1)返回非分割状态。
例将屏幕分割为四块,并分别画出y=sin(x),z=cos(x);a=sin(x)*cos(x),
b=sin(x)/cos(x)。
解x=linspace(0,2*pi,100);
y=sin(x);z=cos(x);
a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps);
subplot(2,2,1);plot(x,y),title('sin(x)')
subplot(2,2,2);plot(x,z),title('cos(x)')
subplot(2,2,3);plot(x,a),title('sin(x)cos(x)')
subplot(2,2,4);plot(x,b),title('sin(x)/cos(x)')
2.3.5缩放图形
zoomon为当前图形打开缩放模式。
单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大2倍;单击鼠标右键,则缩小2倍。
zoomoff:
关闭缩放模式。
例缩放y=sin(x)的图形
解x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y)
zoomon
请在图形窗口演示
2.3.6改变视角view
(1)view(a,b)
命令view(a,b)改变视角到(a,b),a是方位角,b为仰角。
缺省视角为(-37.5,30)。
view用空间矢量表示的,三个量只关心它们的比例,
与数值的大小无关,x轴view([1,0,0]),y轴view([0,1,0]),z轴
view([0,0,1])。
例画出曲面Z=(X+Y).^2在不同视角的网格图.
解x=-3:
0.1:
3;y=1:
0.1:
5;
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
subplot(2,2,1);mesh(X,Y,Z)
subplot(2,2,2);mesh(X,Y,Z);view(50,-34)
subplot(2,2,3);mesh(X,Y,Z);view(-60,70)
subplot(2,2,4);mesh(X,Y,Z);view(0,1)
可以直接在图形窗口操作(示范)。
2.3.7动画
Moviein(),getframe,movie()
函数Moviein()产生一个帧矩阵来存放动画中的帧;函数getframe对当前的图象进行快照;函数movie()按顺序回放各帧。
例将曲面peaks做成动画。
解[x,y,z]=peaks(30);
surf(x,y,z)
axis([-33-33-1010])
m=moviein(15);
fori=1:
15
view(-37.5+24*(i-1),30)
m(:
i)=getframe;
end
movie(m)
请演示
2.4特殊的二维图形函数
2.4.1极坐标图:
polar(theta,rho,s)
用角度theta(弧度表示)和极半径rho作极坐标图,用s指定线型。
例r=sin2×cos2的极坐标图形。
解theta=linspace(0,2*pi);
rho=sin(2*theta).*cos(2*theta);
polar(theta,rho,'g')
title('Polarplotofsin(2*theta).*cos(2*theta)');
2.4.2散点图:
scatter(X,Y,S,C)
在向量X和Y的指定位置显示彩色圈.X和Y必须大小相同.
例绘制seamount散点图。
解输入命令:
loadseamount
scatter(x,y,5,z)
2.4.3平面等值线图:
contour(x,y,z,n)绘制n个等值线的二维等值线图
例在范围-2的等值线图。
解输入命令:
[X,Y]=meshgrid(-2:
.2:
2,-2:
.2:
3);
Z=X.*exp(-X.^2-Y.^2);
[C,h]=contour(X,Y,Z);
clabel(C,h)
colormapcool
2.5特殊的三维图形函数
2.5.1空间等值线图:
contour3(x,y,z,n)
其中n表示等值线数。
例山峰的三维和二维等值线图。
解[x,y,z]=peaks;
subplot(1,2,1)
contour3(x,y,z,16,'s');
grid;xlabel('x-axis'),ylabel('y-axis')
zlabel('z-axis')
title('contour3ofpeaks');
subplot(1,2,2)
contour(x,y,z,16,'s');
grid;xlabel('x-axis'),ylabel('y-axis')
title('contourofpeaks');
2.5.2三维散点图scatter3(X,Y,Z,S,C)
在向量X,Y和Z指定的位置上显示彩色圆圈.向量X,Y和Z的大小必须相同。
例绘制三维散点图。
解输入命令:
[x,y,z]=sphere(16);X=[x(:
)*.5x(:
)*.75x(:
)];
Y=[y(:
)*.5y(:
)*.75y(:
)];
Z=[z(:
)*.5z(:
)*.75z(:
)];
S=repmat([1.75.5]*10,prod(size(x)),1);
C=repmat([123],prod(size(x)),1);
scatter3(X(:
),Y(:
),Z(:
),S(:
),C(:
),'filled'),view(-60,60)
例:
要在某山区方圆大约27平方公里范围内修建一条公路,从山脚出发经过一个居民区,再到达一个矿区。
横向纵向分别每隔400米测量一次,得到一些地点的高程:
(平面区域0<=x<=5600,0<=y<=4800),需作出该山区的地貌图和等高线图。
3600
3200
2800
2400
2000
1600
1200
1480150015501510143013001200980
15001550160015501600160016001550
15001200110015501600155013801070
15001200110013501450120011501010
139015001500140090011001060950
13201450142014001300700900850
11301250128012301040900500700
Y/x
12001600200024002800320036004000
程序:
x=0:
400:
5600;y=0:
400:
4800;
z=[370470550600670690670620580450400300100150250;...
510620730800850870850780720650500200300350320;...
650760880970102010501020830900700300500550480350;...
740880108011301250128012301040900500700780750650550;...
830980118013201450142014001300700900850840380780750;...
88010601230139015001500140090011001060950870900930950;...
9101090127015001200110013501450120011501010880100010501100;...
9501190137015001200110015501600155013801070900105011501200;...
143014301460150015501600155016001600160015501500150015501550;...
1420143014501480150015501510143013001200980850750550500;...
138014101430145014701320128012001080940780620460370350;...
13701390141014301440114011101050950820690540380300210;...
13501370139014001410960940880800690570430290210150];
meshz(x,y,z),rotate3d;xlabel('X'),ylabel('Y'),zlabel('Z')
2.6图形窗口简介
以上介绍了MATLAB图形的基本操作,下面介绍MATLAB图形展示的载体——图形窗口的使用方法。
MATLAB的图形窗口如图2—24所示
2.6.1窗口的菜单操作
MATLAB图形窗口的菜单与桌面平台的菜单有所不同。
(1)【File】菜单
MATLAB图形窗口的【File】菜单与桌面平台类似,但增加了图形输出
(export)以及打印的菜单命令(pagesetup、printpreview以及print等),这些选项将打开相应的对话框。
【Export】选项将打开图形输出对话框,在该对话框中可以把图形以emf的方式保存。
【pagesetup】选项将打开页面设置对话框,该对话框中包括4个设置页面,分别为图形尺寸设置页面、纸张设置页面、线型和文本设置页面以及坐标轴图形设置页面。
【print】选项的作用是打开Windows自带的打印设置对话框。
【printpreview】选项将打开打印预览对话框,在该对话框中可以打开打印对话框(Print),也可以页面设置对话框(PageSetup)进行设置,并且可以缩放图形(ZoomIn/Out),最后通过【Close】按钮关闭该对话框。
【print】选项则打开Windows自带的打印对话框。
(2)【Edit】菜单
【Edit】菜单增加了(FigureProperties、AxesProperties以及CurrentObjectProperties)等选项。
【FigureProperties】选项将打开图形属性设置对话框,在该对话框的顶部宣示的是图形对象,下面显示的是图形属性设置页面,包括图形风格(Style)、图形标题(Title)、图形显示类型(Rendering)以及图形信息(Info)等。
【AxesProperties】选项将打开坐标轴属性对话框,在该对话框中将可以设置坐标轴的尺度(Scale)、风格(Style)、标注(Lable)、比例(Aspect)、光源(Lights)、视点(Viewpoint)以及坐标轴信息(Info)等。
【CurrentObjectPropertis】选项将打开当前对象属性设置对话框。
(3)【View】菜单
【View】菜单包括【Figuretoolbar】、【Cameratoolbar】两个选项,分别打开图形操作工具条和照相工具条。
(4)【Insert】菜单
通过【Insert】菜单可以在图中添加不同对象,如坐标轴、标注等。
(5)【Tools】菜单
【Insert】菜单包括简单的图形操作和照相操作等。
其中【BasicFitting】选项将打开图形数据拟合对话框,包括选取数据源(Selectdata)、拟合方式(Checktodisplayfitsonfigure)、拟合函数的显示(Showequations)、数值的有效位数(Signifi)以及是否显示残差(Plotresiduals)等;【DataStatistics】选项将打开图形数据统计对话框,可以获得数据的最小值、最大值、平均值、中值以及均方差等。
(6)【Window】、【Help】菜单
图形窗口的【Window】、【Help】菜单与桌面平台的菜单类似。
2.6.2图形窗口的工具栏:
如图2—25所示。
其中,新建、打开、保存以及打印等工具栏命令与桌面平台工具栏相同。
下面是图形窗口所特有的几个工具栏命令。
:
启动图形编辑。
:
在图形中鼠标单击位置加入文本。
:
在图形中加入箭头符号。
:
在图形中加入直线段。
:
放大图形。
:
缩小图形。
:
对图形进行手动旋转。
2.7习题
1、在同一平面中的两个窗口分别画出心形线和马鞍面。
要求:
(1)在图形上加格栅、图例和标注;
(2)定制坐标;
(3)以不同角度观察马鞍面
z=x2-y2
2、以不同的视角观察球面x2+y2+z2=1和圆柱面x2+y2=z所围区域。