Matlab绘图(第五节 |
您所在的位置:网站首页 › 用matlab画三维曲面 › Matlab绘图(第五节 |
具体讲述了三维曲面绘图方法等。 平面网格数据的生成此时所有点坐标可以表示为: x=[2 2 2 2 2 2;3 3 3 3 3 3;4 4 4 4 4 4;5 5 5 5 5 5;6 6 6 6 6 6] y=[3 4 5 6 7 8;3 4 5 6 7 8;3 4 5 6 7 8;3 4 5 6 7 8;3 4 5 6 7 8] 矩阵x,y就是该平面内的网格坐标矩阵。 (1)利用矩阵运算生成 x=2:6; y=(3:m,8)'; X=ones(size(y))*x; Y=ones(size(x))*y;%所生成的网格坐标矩阵与上述一致。 (2)利用meshgrid函数生成[X,Y]=meshgrid(x,y); 其中,参数x,y为向量,存储网格点坐标的X,Y为矩阵。 x=2:6; y=(3:8)'; [X,Y]=meshgrid(x,y);当x与y相同时直接简化为[X,Y]=meshgrid(x) 例1:绘制空间曲线。 x=2:6; y=(3:8)'; [X,Y]=meshgrid(x,y); Z=randn(size(X)); plot3(X,Y,Z); grid on; 绘制三维曲面图的函数mesh(x,y,z,c) surf(x,y,z,c) 其中,x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的曲面颜色。c省略时,默认c等于z。 例2:绘制三维曲面图。 t=-2:0.2:2; [X,Y]=meshgrid(t); Z=X.*exp(-X.^2-Y.^2); subplot(1,3,1) mesh(X,Y,Z); subplot(1,3,2) surf(X,Y,Z); subplot(1,3,3) plot3(X,Y,Z); grid on拓展:带等高线的三维网格曲面函数meshc 带底座的三维网格曲面函数meshz 具有等高线的曲面函数surfc 具有光照效果的曲面函数surfl 例3:用四种方式绘制函数的曲面图,其中x的范围为0~2,y的范围为1~3。 [x,y]=meshgrid(0:0.1:2,1:0.1:3); z=(x-1).^2+(y-2).^2-1; subplot(2,2,1); meshc(x,y,z) subplot(2,2,2); meshz(x,y,z) subplot(2,2,3); surfc(x,y,z) subplot(2,2,4); surfl(x,y,z) 标准三维曲面 (1)sphere函数[x,y,z]=sphere(n) n代表球面的圆滑程度(默认为20),若不带输出参数,则直接绘制球面。 (2)cylinder函数[x,y,z]=cylinder(R,n) R代表柱面半径,n表示有多少间隔点(默认为20个) 例4:用cylinder函数分别绘制柱面,花瓶面和圆锥面 subplot (1,3,1); [x,y,z]=cylinder; surf(x,y,z); subplot(1,3,2); t=linspace(0,2*pi,40); [x,y,z]=cylinder(2+cos(t),30); surf(x,y,z); subplot(1,3,3); [x,y,z]=cylinder(0:0.2:2,30); surf(x,y,z); 例5:用cylinder函数绘制两个相互垂直且直径相等的圆柱面的相交图形。 clear;clc [x,y,z]=cylinder(1,60) z=[-1*z(2,:);z(2,:)] surf(x,y,z) hold on surf(y,z,x) axis equal fsurf函数和fmesh函数fsurf(funx, funy, funz, uvlims) fmesh(funx, funy, funz, uvlims) 其中,funx、funy、funz代表定义曲面x、y、z坐标的函数,通常采用函数句柄的形式。uvlims为funx、funy和funz的自变量的取值范围,用4元向量[umin,umax, vmin,vmax]描述。默认为[-5,5,-5,5]。 例5:绘制螺旋曲面 clear;clc subplot(1,2,1) fsurf(@(u,v) u.*sin(v),@(u,v) -u.*cos(v),@(u,v) v,[-5,5,-5,2]) subplot(1,2,2) fmesh(@(u,v) u.*sin(v),@(u,v) -u.*cos(v),@(u,v) v,[-5,5,-5,2]) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |