Matlab建模训练3  图形绘制
一、学习二维平面图形的描绘方法
plot函数表
函数
功能
plot(Y,’s’)
以向量Y为纵坐标,Y的元素下标为横坐标,作数值图。S用来指定线型和颜,可缺省。
plot(X,Y,’s’)
XY都是n维向量时,绘制以X,Y为横、纵坐标向量的曲线。当Xn维向量,Yn×ss×n矩阵时,绘制以X为横坐标向量的s条曲线。
plot(x1,y1,’s1’,s2,y2,’s2’,…)
每个三元组(x1,y1,’s1’)绘制一条曲线。
绘图参数
符号
符号
形状
b
.
k
+
加号
r
-
实线
图形的标注
函数
功能
xtable(‘str’)
标注横坐标轴
ytable(‘str’)
标注纵坐标轴
title(‘str’)
标注图形标题
极坐标作图
类型
函数
功能
数值图
polar(,r,’s’)
绘制极角,极径r的极坐标曲线,s表示线形、颜
函数图r=f()
ezpolar(f,[a,b])
绘制极坐标函数r=f()在区间上的曲线,默认区间是
1、 在同一窗口绘制正、余弦函数的图形。
2、绘制三叶玫瑰线r=sin(3)
3、绘制分段函数的图形。
二、学习空间曲线的绘制
数值作图
函数
功能
备注
plot3(X,Y,Z’s’)
绘制以XYZ的对应分量为坐标的三维曲线
XYZ是同维向量或同维矩阵(矩阵的列数条曲线),s是线型、颜
Plot(X1,Y1,Z1,’s1’,’X2,Y2,Z2,’s2’)
每四个数组Xi,Yi,Zi,’si’,绘制一条曲线
XiYiZi是同维向量
符号函数作图
函数
功能
ezploy3(x,y,z)
在默认区域上绘制x=x(t),y=y(t),z=z(t)的图形
ezploy3(x,y,z,[a,b])
在区间上绘制x=x(t),y=y(t),z=z(t)的图形
ezploy3(x,y,z,[a,b],’animate’)
同上,且产生动画绘制效果
1、绘制三维螺旋线
2、 绘制空间曲线
三、学习空间曲面的绘制
数值作图
函数
功能
mesh(Z)
Z矩阵的列、行下标为自变量x,y的值,画网格图
mesh(X,Y,Z)
以矩阵XYZ为坐标的网格图
meshz(X,Y,Z)
同上,在网格下方绘制等高线
surf(Z)
mesh(Z),绘制三维表面图
surf(X,Y,Z)
绘制以矩阵XYZ为坐标的表面图
surfc(X,Y,Z)
绘制表面图及等高线
绘制函数的图形,观察4个子图的不同特征。
[X,Y]=meshgrid(-4:0.2:4);
Z=X.*sin(sqrt(X.^2+Y.^2));
subplot(2,2,1)
mesh(Z)
subplot(2,2,2)
mesh(X,Y,Z)
subplot(2,2,3)
surf(X,Y,Z)
subplot(2,2,4)
surfc(X,Y,Z)
符号函数作图
函数
功能
ezmesh(f)
在默认区域上画z=f(x,y)的网格图
ezmesh(f,[a,b])
上画z=f(x,y)的网格图
ezmesh(f,[a,b,c,d])
上画z=f(x,y)的网格图
ezmesh(f,[a,b,c,d],’circ’)
在圆域(圆心为,半径)上画同上网格图
ezmesh(x,y,z)
上画由参数方程x=x(s,t),y=y(s,t),z=z(s,t)确定的网格图
ezmesh(x,y,z,[a,b])
上画同上网格图
ezmesh(x,y,z,[a,b,c,d])
上画同上网格图
ezmesh(x,y,z,[a,b,c,d],’circ’)
在圆域上画同上网格图
ezmesh(f,[a,b])
画带等高线的三维网格图
若自变量不是x,y,自变量的取值顺序按字母顺序排列。
ezsurf命令彩表面图,调用格式与ezmesh相同。
view函数
函数
功能
view(az,el)
通过方位角、俯视角设置视点
view([x,y,z])
通过直角坐标设置视点
view(2)
设置二维图形的视角,默认
view(3)
设置二维图形的视角,默认
分别用命令ezmesh()ezsurf()作函数z=xy的图形,并观察4个子图的不同特征。
 
syms x y
z=x*y;
subplot(2,2,1)
ezsurf(z,[-2,2])
subplot(2,2,2)
ezmesh(z,[-2,2],'circ')
subplot(2,2,3)
ezsurf(z,[0,4,-1,4])
subplot(2,2,4)
ezmesh(z,[0,4,-1,4],'circ')
绘制函数的图形,并在各坐标设置点观察图形。
 
z='x*exp(-x^2-y^2)';
subplot(2,2,1)
ezsurf(z)
subplot(2,2,2)
ezsurf(z)
view([1,0,0])
[az1,el1]=view
subplot(2,2,3)
ezsurf(z)
view([0,1,0])
[az2,el2]=view
subplot(2,2,4)
ezsurf(z)
view([0,0,1])
[az3,el3]=view
az1 =90
el1 =0
az2 =180
el2 =0
az3 =0
el3 =90
二维符号等高线图
函数
功能
ezcontour(f)
在默认区域上画z=f(x,y)的等高线图
ezcontour(f,[a,b])
上画z=f(x,y)的等高线图
ezcontour(f,[a,b,c,d])
上画z=f(x,y)的等高线图
ezcontour(…,n)
绘制z=f(x,y)个网格的等高线图,n的默认值是60
ezcontourf(…,n)
绘制z=f(x,y)个网格的经过填充的等高线图
二维数值等高线图
函数
功能
contour(z)
绘制矩阵Z的二维等高线,x,y坐标由z的列、行下标确定
contour(z,n)
绘制同上等高线,指定等高线为n条,缺省值是8
contour(z,v)
绘制z的等高线,等高线位于向量v指定的值处,等高线的条数为length(v)
contour(X,Y,Z)
绘制z的二维等高线,若XY是向量,则XY确定坐标轴的范围;若XY是矩阵,则X(1,:)Y(:,1)确定坐标轴的范围
contour(X,Y,Z,’s’)
同上,s指定线型、颜
c=contour(…)
绘制等高线,并返回等高线矩阵c,其中()表示上述各类参数
contourf(X,Y,Z)
绘制填充二维等高线
contour3绘制三维等高线,调用格式同contour
绘制函数的二维等高线和填充等高线。
 
z='sin(x)+cos(x+y)';
figure(1)
ezsurf(z,[-pi/2,pi/2])
figure(2)
subplot(1,2,1)
ezcontour(z,[-pi/2,pi/2])
subplot(1,2,2)
ezcontourf(z,[-pi/2,pi/2])
绘制多峰函数,在上的图形以及二维等高线、二维填充等高线和三维等高线的图形。
 
x=linspace(-pi,pi,50);
[X,Y]=meshgrid(x);
Z=3.*(1-X).^2.*exp(-X.^2-(Y+1).^2)-10*(X./5-X.^3-Y.^5).*exp(-X.^2-Y.^2)...
    -1/3.*exp(-(X+1).^2-Y.^2);
figure(1)
surf(X,Y,Z)
title('多峰函数')
 
figure(2)
c=contour(X,Y,Z,8);
clabel(c)
title('多峰函数标注高度的二维等高线')
 
figure(3)
contourf(X,Y,Z,12)
title('多峰函数的二维等高线')
 
figure(4)
contour3(X,Y,Z,16)
grid off
title('多峰函数的三维等高线')
梯度
函数
功能
说明
[Fx,Fy]=gradiend(F,h)
求二元函数的梯度
F是函数的数值矩阵,h是步长,默认值为1
quiver(x,y,u,v,s)
xOy平面上画(u,v)表示的箭头
S是箭头的长度
1)绘制曲面z=x2+y2的图形和等高线的图形;(2)绘制梯度的图形;(3)绘制从点(12)出发的梯度线;(4)将等高线、梯度、梯度线绘制在同一图形窗口。
解:用等长的折线段来模拟梯度线。设步长t,从点pk(xk,yk)出发,沿梯度方向前进t得到点Pk+1(xk+1,yk+1),
连接P0P1P2,即得梯度线的图形。
1 绘制曲面与等高线
程序:
[X,Y]=meshgrid(-6:0.5:6);
Z=X.^2-Y.^2;
subplot(2,2,1)
surfc(Z)
2 绘制梯度的图形程序:
程序:
[FX,FY]=gradient(Z,0.5);
subplot(2,2,2)
quiver(X,Y,FX,FY,0.8)
3 绘制从点(12)出发的梯度线
程序:
subplot(2,2,3)
syms x y
f=x^2-y^2;
fd=[diff(f,x) diff(f,y)];
t=0.025;
x0=ones(1,100);
y0=x0*2;
for i=1:100
    fd0=subs(fd,{x,y},{x0(i),y0(i)});
    x0(i+1)=x0(i)+fd0(1)/sqrt(fd0(1)^2+fd0(2)^2)*t;
    y0(i+1)=y0(i)+fd0(2)/sqrt(fd0(1)^2+fd0(2)^2)*t;
end
plot(x0,y0)
4 将等高线、梯度、梯度线绘制在同一图形窗口
程序:
subplot(2,2,4)
plot(x0,y0,'r',x0(1),y0(1),'r*')
hold on
contour(X,Y,Z,10,'b')
hold on
quiver(X,Y,FX,FY,0.9)
matlab等高线填充颜
hold off
运行结果为:
练习:
编程作下列曲面绘图:
1用平面曲线r=2+cos(t)+sin(t)t(0,π)绘制旋转曲面
2用直角坐标绘制双曲抛物面曲面网线图,z2=xy  (-3<x<3,-3<y<3)
3用直角坐标绘制曲面表面图, (-5<x<5,-5<y<5)
4用直角坐标绘制修饰过的光滑曲面曲面:z4=sin(x)cos(yxy 的取值在(-π,π)
5用连续函数绘图方法绘制曲面,x[-2pi,2pi], y[-2pi,2pi],并作图形修饰。
6、绘制在定义域x=[-2,2],y=[-2,2]内的曲面。(利用meshgrid