为了显示三维图形,MATLAB提供了各种各样的函数。有一些函数可在三维空间中画线,而另一些可以画曲面与线格框架。另外,颜色可以用来代表第四维。当颜色以这种方式使用时,由于它不再象照片中那样显示信息的自然属性----色彩,而且也不是基本数据的内在属性,所以它称作伪彩色。为了简化对三维图形的讨论,对颜色的介绍推迟到下一章。在这一章,主要讨论绘制三维图形的基本概念。
以下所讨论的函数和它们的特征总结在表2、表3、表4和表5中:
表2
contour二维等值线图,即从上向下看contour3等值线图contour3等值线图fill3填充的多边形mesh网格图meshc具有基本等值线图的网格图meshz有零平面的网格图pcolor二维伪彩色绘图,即从上向下看surf图plot3直线图quiver二维带方向箭头的速度图surf曲面图surfc具有基本等值线图的曲面图surfl带亮度的曲面图waterfall无交叉线的网格图
表示3
axis修正坐标轴属性clf清除图形窗口clabel放置等值线标签close关闭图形窗口figure创建或选择图形窗口getframe捕捉动画桢grid放置网格griddata对画图用的数据进行内插hidden隐蔽网格图线条hold保留当前图形meshgrid产生三维绘图数据movie放动画moviein创建桢矩阵,存储动画shading在曲面图和伪彩色图中用分块、平滑和插值加阴影subplot在图形窗口内画子图text在指定的位置放文本title放置标题view改变图形的视角xlabel放置x轴标记ylabel放置y轴标记zlabel放置z轴标记
表4
view(az,el)设置视图的方位角az和仰角elview([az,el])view([x,y,z])在笛卡儿坐标系中沿向量[x,y,z]正视原点设置视图,例如view([0 0 1])=view(0,90)view(2)设置缺省的二维视图,az=0,el=90view(3)设置缺省的三维视图,az=-37.5,el=30[az,el]=view返回当前的方位角az和仰角elview(T)用一个4×4的转置矩阵T来设置视图T=view返回当前的4×4转置矩阵
表5
mmcont2(X,Y,Z,C)具有颜色映象的二维等值线图mmcont3(X,Y,Z,C)具有颜色映象的三维等值线图mmspin3d(N)旋转当前图形的三维方位角来制作动画mmview3d用滑标来调整视角
另外提醒一点,Matlab的reshape函数是列优先的,如:
y = 1 2 3 4 5 6
reshape(y,3,2)=
1 4
2 5
3 6
而不是 1 2 3
4 5 6
http://zhanglili011282.blog.163.com/blog/static/816261002008111631157417/
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
一、直接绘图函数
直接绘图函数有两个,fplot和ezplot
1.fplot
fplot命令的调用格式主要有:
(1)fplot(fun,lims,str,tol):直接绘制函数y=fun(x)的图形。其中,lims为一个向量,若lims只包含两个元素则表示x轴的范围:[xmin,xmax]。若lims包含四个元素则前两个元素表示x轴的范围:[xmin,xmax],后两个元素表示y轴的范围:[ymin,ymax]。str可以指定图形的线型和颜色。tol的值小于1,代表相对误差,默认值为0.002,即0.2%。
>>fplot(@humps,[-1,5]) %在[-1,5]范围内绘制函数humps
上述命令中,@humps表示以函数句柄的形式引用函数。(C:\Program Files\MATLAB\R2009a\toolbox\matlab\demos\humps.m)。
(2)fplot(fun,lims,n):用最少n+1个点来绘制函数fun的图形,其中n大于等于1。
>>fplot('x^2',[-1 1]) %在[-1,1]范围内绘制函数y=x^2
2. ezplot,ezplot3
ezplot命令是绘制符号表达式的自变量和对应各函数值的二维曲线,ezplot3命令用于绘制三维曲线。
(1) 曲线绘图
语法:
ezplot(F,[xmin,xmax],fig) %画符号表达式F的图形
说明:F是将要画的符号函数;[xmin,xmax]是绘图的自变量范围,省略时默认值为[-2л,2л];fig是指定的图形窗口,省略时默认为当前图形窗口。
例:
>>y =sym('-1/3*x^3+1/3*x^4')
y =
-1/3*x^3+1/3*x^4
>>ezplot(y) %绘制符号函数y在[-2л,2л]中的图形
>>ezplot(y,[0,100]) %绘制符号函数y在[0,100]中的图形
又例
>>x=sym('sin(t)');
>>y=sym('cos(t)');
>>z=sym('t');
>>ezplot3(x,y,z,[0,10*pi],'animate') %绘制t在[0,10*pi]范围的三维曲线
(2)曲面绘制
如
>>ezmesh('sin(x)*exp(-t)','cos(x)*exp(-t)','x',[0,2*pi]);
ezmesh意为Easy to use 3-D mesh plotter,所以其调用格式简单,绘图方便。
(3)其它绘图命令
MATLAB还提供了如下表所示的较常用绘图命令。这些命令的举例都是对字符串函数进行绘图,同样也可用于符号表达式绘图。
命令名 含义 举例
ezcontour 画等高线 ezcontour('x*sin(t)',[-4,4])
ezcontourf 画带填充颜色等高线 ezcontourf('x*sin(t)',[-4,4])
ezmesh 画三维网线图 ezmesh('sin(x)*exp(-t)','cos(x)*exp(-t)','x',[0,2*pi])
ezmeshc 画带等高线的三维网线图 ezmeshc('sin(x)*t',[-pi,pi])
ezpolar 画极坐标图 ezpolar('sin(t)',[0,pi/2])
ezsurf 画三维曲面图 ezsurf('x*sin(t)','x*cos(t)','t',[0,10*pi])
ezsurfc 画带等高线的三维曲面图 ezsurfc('x*sin(t)','x*cos(t)','t',[0,pi,0,2*pi])
二、网格法绘制三维曲面
1.产生三维数据
在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为:
x=a:d1:b; y=c:d2:d;
[X,Y]=meshgrid(x,y);
语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。
2.绘制三维曲面的函数
surf函数和mesh函数的调用格式为:
mesh(x,y,z,c)
surf(x,y,z,c)
一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。
例:
用曲面图表现函数y=x^2+y^2。
clf,x=-4:4;y=x;[X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2;
surf(X,Y,Z); %或mesh(X,Y,Z)