资源描述:
《Matlab实训5-三维图形的绘制.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实训五三维图形的绘制三维图形包括:三维曲线图:plot3三维曲面图:mesh和surf图形的绘制Plot3函数MATLAB中,plot3用于绘制三维曲线。该函数调用的基本格式为:plot3(X,Y,Z),其中X、Y、Z为向量或矩阵。当X、Y、Z为长度相同的向量时,该命令将绘制一条分别以向量X、Y、Z为横、竖、纵坐标的空间曲线;当X、Y、Z为矩阵时,该命令以每个矩阵的对应列为横、竖、纵坐标绘制出条空间曲线。三维曲线例绘制三维曲线。程序如下:t=0:pi/100:20*pi;x=sin(t);y=cos(t);z=t.*sin(t).*cos(t);plot3(x,y,
2、z);title('Linein3-DSpace');xlabel('X');ylabel('Y');zlabel('Z');gridon;例画多条曲线观察函数Z=(X+Y).^2.程序如下x=-3:0.1:3;y=1:0.1:5;[X,Y]=meshgrid(x,y);Z=(X+Y).^2;plot3(X,Y,Z)plot3(X1,Y1,Z1,选项),通过选项指定曲线和点的属性,选项的取值与plot介绍的相同。plot3(...,'PropertyName',PropertyValue,...),利用指定的属性绘制图形。h=plot3(...),绘制图形并返回图形句
3、柄,h为一个列向量,每个元素对应图像中每个对象的句柄。mesh函数和surf函数mesh命令可以绘制出在某一区间内完整的网格曲面,surf函数可以绘制三维曲面图。这两个函数的调用格式基本相同,如下:mesh(X,Y,Z),surf(X,Y,Z)绘制出一个网格图(曲面图),图像的颜色由Z确定,即图像的颜色与高度成正比。如果函数参数中,X和Y是向量,length(X)=n,length(Y)=m,size(Z)=[m,n],则绘制的图形中,(X(j),Y(i),Z(i,j))为图像中的各个节点。mesh(Z),surf(Z)以Z的元素为z坐标,元素对应的矩阵行和列分别为x
4、坐标和y坐标,绘制图像。mesh(...,C),surf(...,C)其中C为矩阵。绘制出图像的颜色由C指定。MATLAB对C进行线性变换,得到颜色映射表。如果X,Y,Z为矩阵,则矩阵维数应该与C相同。三维曲面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
5、(X,Y,z,c)surf(X,Y,z,c)一般情况下,X,Y,z是维数相同的矩阵。X,Y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。两者的区别:mesh绘出彩色的线,surf绘出彩色的面例绘制三维曲面图z=sin(x+sin(y))-x/10。程序如下:[x,y]=meshgrid(0:0.25:4*pi);z=sin(x+sin(y))-x/10;mesh(x,y,z);axis([04*pi04*pi-2.51]);此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是me
6、shc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。例在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。程序如下:[x,y]=meshgrid(-8:0.5:8);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);subplot(2,2,1);mesh(x,y,z);title('mesh(x,y,z)')subplot(2,2,2);meshc(x,y,z);title('meshc(x,y,z)')subplot(2,2,3);meshz(x,y,z)title('mesh
7、z(x,y,z)')subplot(2,2,4);surf(x,y,z);title('surf(x,y,z)')3.标准三维曲面sphere函数的调用格式为:[x,y,z]=sphere(n)cylinder函数的调用格式为:[x,y,z]=cylinder(R,n)MATLAB还有一个peaks函数,称为多峰函数,常用于三维曲面的演示。例绘制标准三维曲面图形。程序如下:t=0:pi/20:2*pi;[x,y,z]=cylinder(2+sin(t),30);subplot(2,2,1);surf(x,y,z);subplot(2,2,2);[x,