MATLAB绘图(第2讲)解析
第四章 MATLAB 绘图
复习:
一 、 MATLAB 绘图的一般步骤 1、 取点。
2、 输入作图命令,绘制图形。 二、二维图形的绘制
直角坐标系中,二维曲线的作图命令有:Plot 、fplot 、ezplot Plot ():plot(X,’s ’),plot(x,y,’s ’),plot(X,Y,’s ’) Fplot ():ezplot(‘f ’),ezplot(‘f ’,[xmin,xmax]), ezplot(‘x(t)’,’y(t)’,[xmin,xmax]),fplot(‘fun ’,lims)
ezplot ():polar(theta ,rho ,’s ’),ezpolar(‘f ‘),ezpolar(‘f ‘ ,[a ,b])
第六讲
二 极坐标系由一条带箭头的射线构成,射线端点称为极坐标的极点,射线称为极轴。在极坐标系中平面内的点可极角theta 、极径rho 确定,一般极径rho 被看作是极角theta 的函数,即rho=f(theta)
命令格式
说 明
polar(theta ,rho ,’s ’) 输入时theta 可换为x ,rho 可换为y ,用法与plot 命令相同 ezpolar(‘f ‘) 在默认区间()π2,0上绘制函数rho=f(theta)的图形,用法与ezplot 命令相同。
ezpolar(‘f ‘ ,[a ,b])
在区间(a ,b )上绘制函数rho=f(theta)的图形
例:阅读并运行下列程序:
1、心形线: 一般方程形式:)cos 1(θ±=a r , )sin 1(θ±=a r (a 为常数)
>> x=0:0.05*pi:2*pi; >> y=2*(1+cos(x)); >> polar(x,y)
2、三叶玫瑰线:θ3sin a r = , θ3cos a r =
四叶玫瑰线:θ2cos a r =, θ2sin a r =
>> ezpolar('2*cos(3*x)')
>> ezpolar('sin(t)/t',[-6*pi,6*pi])
>> x=0:pi/100:2*pi;
>> y1=3*cos(x);y2=1+cos(x);
>> polar(x,y1,'r')
>> hold on %保持当前图形不被刷新,hold off为解除保持图形的命令
>> polar(x,y2)
三多子图命令:MATLAB允许在同一图形窗里布置几幅独立的子图,子图命令为subplot 格式:subplot(m,n,k) ,把窗口分割成m n个子绘图区域的第k个子图,
子绘图区域按从左到右编号,k为子图编号。subplot产生的子图互相独立,所有的绘图命令都可以在子图中运用。
例:阅读并运行下列程序:
>> x=0:0.01*pi:2*pi;
>> y1=sin(abs(x));y2=2*cos(2*x);
>> subplot(2,2,1),plot(x,y1)
>> subplot(2,2,2),polar(x,y2)
>> subplot(2,2,3),fplot('log(x)',[1,5])
>> subplot(2,2,4),ezplot('tan(x)',[-6*pi,6*pi])
上机实践:
1)用子图命令在同一窗口绘制以下不同极坐标系中的图形
阿基米德螺线:θa r = (a 为常数) 四叶玫瑰线:θ2cos 4=r 圆:θcos 4=r 心形线:)sin 1(3θ-=r 1.
x=0:0.01*pi:2*pi; r1=2*x;
subplot(2,2,1),polar(x,r1) >> r2=4*cos(2*x);
>> subplot(2,2,2),polar(x,r2) >> r3=4*cos(x); >> hold on
>> subplot(2,2,3),polar(x,r3) >> hold on
>> r4=3*(1-sin(x)); >>
subplot(2,2,4),polar(x,r4)
2)在同一极坐标系中绘制θsin 1+=r 和1=r 的图形 x=0:0.01*pi:2*pi; >> r1=1+sin(x); >> polar(x,r1)
>> x=0:0.01*pi:2*pi; r1=1+sin(x); polar(x,r1) >> hold on r2=1;
>> plot(x,r2)
第二节 三维图形
一、 三维曲线作图命令:
三维曲线的绘图命令是plot3和ezplot3,用于参数方程x=x(t),y=y(t),z=z(t)表示的函数的图形绘制,使用格式与二维曲线的绘图命令plot 、ezplot 相似。
命令格式 说 明
plot3(x,y,z,’s ’) x,y,z 为同维向量,绘制以x,y,z 为坐标的三
维曲线。’s ’是图形修饰项,可以省略。
plot3(X,Y,Z,’s ’) X,Y,Z 为同维矩阵,以X,Y,Z 对应列的元素
为坐标分别绘制曲线,曲线的条数等于矩阵的列数。图形修饰项’s ’缺省时,按默认的颜色、线形显示。
plot3(x1,y1,z1,’s1’,x2,y2,z2,’s2’,……) 绘制多条曲线 ezplot3(‘x ’,’y ’,’z ’,lims) 绘制由参数方程x=x(t),y=y(t),z=z(t)确定的函
数在给定区间lims 图形,lims 省略时,默认区间为∈t [-2ππ2,]
例:1、绘制宝石链曲线
?
?
?
?
?
=
=
=
t
z
t
y
t
x
2
cos
cos
sin
[]π2,0
∈
t
>> t=0:0.02*pi:2*pi;
>> x=sin(t);y=cos(t);z=cos(2*t);
>> plot3(x,y,z,'b-',x,y,z,'bd'),view([-82,58]),box on,legend('
链','宝石') % view是设定三维图形观测点的方位角、俯视角命令
例2、绘制三维螺旋线:
?
?
?
?
?
=
=
=
t
z
t
y
t
x
cos
sin[]π
10
,0
∈
t
>> ezplot3('t','sin(t)','cos(t)',[0,10*pi])
二、三维网格图:
MATLAB处理网格图的方法是:将x y平面按指定设置分割成平面网格,然后根据给出的函数计算第三维变量值,即z的值,与对应的x y平面的坐标构成三维点元素,由此绘制出函数z=f (x,y)确定的三维空间曲面。具体步骤是:
1)自变量x、y取值:用冒号表达式生成,即x=x1:d1:x2; y=y1:d2:y2;
2)生成xy平面上自变量网格:[X,Y]=meshgrid(x,y)
3)计算第三维变量值:输入函数表达式z=f (X,Y)
4)输入三维曲面绘图命令
例:创建xy平面网格数据:
>> x=1:4;y=1:5;
>> [X,Y]=meshgrid(x,y) % 产生xy 平面上定义域中的20个数据 点 X =
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Y =
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
命令格式 说明 mesh(z) 绘制函数z=f (x,y)的三维网格图 mesh(x,y,z) 绘制函数z 的网格图,最常用的格式 mesh(x,y,z,c) 绘制指定颜色c 的网格图
ezmesh(f , lims)
绘制函数z=f(x,y)在作图区间lims 上的网格
lims=[xmin,xmax,ymin,ymax],或lims=[a,b](则a ezmesh(‘x ’,‘y ’,‘z ’ ,[tmin,tmax,smin,smax]) 绘制由参数方x=x(t,s),y=y(t,s),z=z(t,s)确定的网格图,默作图区间省略时,默认区间为[][]ππππ2,2,2,2-∈-∈s t meshz(f) 绘制带底座的网格图 meshc 绘制带等高线的网格图 例1:绘制马鞍面(抛物面)2 2 2y x z -= >> x=-16:16;y=x; >> [X,Y]=meshgrid(x,y); >> z=(X.^2-Y.^2)./2; %数组运算采用点运算符 >> mesh(X,Y,z) 例2:绘制单页双曲面: ? ? ? ? ? = = = u z v u y v u x tan cos sec sin sec ()π π π 2,0 , 4 , 4 ∈ ? ? ? ? ?- ∈v u >> ezmesh('sec(u)*sin(v)','sec(u)*cos(v)','tan(u)',[-pi/4,pi/4,0,2*pi]) 三、三维着色曲面图: 三维着色曲面图的绘图方法和步骤与三维网格图相似,绘图命令是surf、ezsurf 命令格式说明 surf (z) 绘制函数z= f(x,y)的着色曲面 surf (x,y,z) 绘制函数z= f(x,y)的着色曲面,是最常用的格式ezsurf (f,lims) 绘制函数z=f(x,y)在作图区间lims上的着色曲面 lims=[xmin,xmax,ymin,ymax],或lims=[a,b](则 a [][]π π π π2, 2 , 2, 2- ∈ - ∈y x ezsurf(‘x’,‘y’,‘z’ ,[tmin,tmax,smin,smax]) 绘制由参数方程x=x(t,s),y=y(t,s),z=z(t,s)确定的曲 面图,作图区间省略时,默认区间为 [][]π π π π2, 2 , 2, 2- ∈ - ∈s t 例1:绘制函数2 2y x z+ =的曲面图 >> x=-4:4;y=-5:5; % >> [X,Y]=meshgrid(x,y); % 产生xy平面上坐标“格点”矩阵 >> Z=X.^2+Y.^2; % 计算格点上的函数值 >> surf(X,Y,Z);hold on % 绘制着色曲面图并保持在图形窗口 >> stem3(X,Y,Z,'bo') % 绘制三维离散数据柄状图形,用来表现在格点上计算的 函数值