《MATLAB三维散点图scatter3plote》由会员分享,可在线阅读,更多相关《MATLAB三维散点图scatter3plote(49页珍藏版)》请在金锄头文库上搜索。
1、第三章 Matlab图形绘制主要内容3.1. 二维曲线的绘制3.2. 三维曲线的绘制3.3 三维网线图和曲面图的绘制3.4 Matlab图形处理的基本技术3.5 动画技术3.6 图形用户界面设计3.1 二维曲线的绘制1、绘制二维图形最常用的函数是plot,调用格式有以下四种:(1)plot(Y) 如果Y为实向量,则以Y的索引坐标作为横坐标,以Y本身的元素作为纵坐标。如果Y为复数向量,则以该向量实部为横坐标,虚部为纵坐标。(2)plot(X,Y)此时以X为横坐标,Y为纵坐标。X和Y要求维数必须相同。当变量X和Y是同阶矩阵时,将按照矩阵的行或列进行操作。(3)plot(X,Y,s) 第三个变量用于
2、设置图形显示属性。设置图形的线型、颜色、标记等。(4)plot(X1,Y1,s1,X2,Y2,s2,.) 每三项为一组绘制多条曲线。y=rand(100,1); plot(y)x=rand(100,1); z=x+y.*i; plot(z)示例:x=0:0.01*pi:2*pi; y=sin(x),cos(x); plot(x,x,y);x=0:0.01*pi:pi; y=sin(x); z=cos(x); plot(x,y,-k,x,z,-.rd);Matlab绘图命令中的各种选项曲线线型曲线颜色标记符号选项意义选项意义选项意义-实线b蓝色*星号-虚线g绿色.点号:点线m红紫色x叉号-.点划
3、线w白色vnone无线c蓝绿色k黑色r红色O圆圈p五角星y黄色 s方块d菱形h六角星=1);fplot(fun2,-3,3)(2) ezplot(f)可用来绘制显函数、隐函数和参数方程的图形,x轴的默认范围为-2pi,2pi。1)对于显函数y=f(x),调用格式为:ezplot(f,xmin,xmax)2)对于隐函数f(x,y)=0,调用格式为:ezplot(f,xmin,xmax,ymin,ymax)ezplot(f,a,b),x与y在(a,b)区间之内。3)对于参数方程x=x(t),y=y(t),调用格式为:ezplot(x,y)或者ezplot(f,tmin,tmax)示例1:ezplo
4、t(x2*sin(x+y2)+y2*exp(x+y)+5*cos(x2+y),-10 10);示例2:ezplot(cot(x)示例3:ezplot(x2+y2/4=1)示例4:ezplot(x2+y2-1,- 1,1,-1,1)示例5:ezplot(x3+y3-5*x*y) 示例6: ezplot(2*cos(t),sin(t),0,2*pi);3.2 三维曲线的绘制绘制三维曲线的函数是plot3,与plot函数的调用格式相同,也有以 下四种: plot3(x,y,z) plot3(X,Y,Z) X,Y,Z是相同阶数的矩阵,绘出三矩阵的列向量的曲线。 plot3(X,Y,Z,s) plot3
5、(x1,y1,z1,s1,x2,y2,z2,s2,.)组合图形以第二种形式为例 :x,y=meshgrid(-2:0.1:2,-2:0.1:2); z=x.*exp(-x.2-y.2); plot3(x,y,z)函数名说说明函数名说说明mesh三维网格图meshc将网格与等高线结 合meshz屏蔽的网格图meshgrid生成网格点MATLAB对于网格的处理方法是:将xy平面按指定方式分隔成平面网格,然后根据程序中给定的方式计算第三维变量的值,即z轴的值,与对应的xy平面的坐标构成三维点元素,根据由此得到的(x,z)和(y,z)计算各平面的曲线,彼此相连就构成了网格图。3.3 三维网线图和曲面图
6、的绘制(1)网线图mesh函数X,Y=meshgrid(x,y) x和y是给定的向量,可以定义网格的划分区域,也可以定义网格的划分方法,X和Y是网格划分后的数值矩阵。mesh(X,Y,Z,C)绘制四个矩阵变量的彩色网格面图形,观测点由view定义,坐标轴由axis定义,C设置颜色,由colormap实现。mesh(X,Y,Z) 使用C=Z,即颜色正比于图高。mesh(x,y,Z,C)由两个向量代替矩阵,要求length(x)=n,length(y)=m,且m,n=size(Z) 示例1: x=-2:0.1:2;y=-2:0.1:2; xx,yy=meshgrid(x,y); zz=xx.2+y
7、y.2; %ii=find(xx.2+yy.24);zz(ii)=NaN; surf(xx,yy,zz);x=-10:0.5:10;y=-8:0.5:8; x,y=meshgrid(x,y); z=sin(sqrt(x.2+y.2)./sqrt(x.2+y.2); mesh(x,y,z);示例2:(2)着色函数surfsurf(X,Y,Z,C)输入参数的设置和mesh相同,不同的是mesh绘制的是网格图,而surf绘制的着色的三维表面。两者对比如下图所示函数名说明函数名说明函数名说明 bar3三维条形图surfc着色图+等高线comet3三维彗星图trisurf三角形表面图ezgraph3函数
8、控制绘制图waterfall瀑布图pie3三维饼状图scatter3三维散射图cylinder柱面图stem3三维离散数据图sphere球面图trimesh三角形网格图(3)特殊的三维绘图命令(4)旋转曲面图 cylinderX,Y,Z = cylinder(r) 这里的r表示构成旋转曲面的曲线。方法一: Matlab程序如下。 x=0:10:600; X,Y,Z=cylinder(30*exp(-x/400).*sin(x+25*pi)/100)+130); surf(X,Y,Z)方法二:将旋转曲面用参数方程表示。 解 因为这里的函数是隐函数,化成显函数后有两支,必须使用参数方程,旋 转面的
9、参数方程为 画图的Matlab程序如下:alpha=0:0.1:2*pi; beta=0:0.1:2*pi; x=4*cos(alpha)*ones(size(beta); y=(5+4*sin(alpha)*cos(beta); z=(5+4*sin(alpha)*sin(beta); surf(x,y,z) 画图的Matlab程序也可以写成 x=(alpha,beta) 4*cos(alpha); y=(alpha,beta) (5+4*sin(alpha)*cos(beta); z=(alpha,beta) (5+4*sin(alpha)*sin(beta); ezsurf(x,y,z)
10、(5)绘制柱面图柱面平行于某个坐标轴,方程中不出现某个坐标轴的变量,方程表示为F(x,y)=0或者F(x,z)=0或者F(y,z)=0示例一:画出方程 表示的柱面解:方程中的x是自变量矩阵,z是因变量,则另一个自变量矩阵为y,自变量平面是xoy面,x轴是真正的自变量,y轴是柱面方向。Matlab程序如下:u=linspace(-5,5,10);%设定参数列向量uv=linspace(-5,10,10); %设定参数行向量vX=u*ones(size(v); %构成自变量矩阵XY=ones(size(u)*v; %构成自变量矩阵YZ=2-X.2; %求因变量Zmesh(X,Y,Z)(6)其他二次
11、曲面Matlab中使用绘图命令ezmesh或ezsurf也很方便,只需要把曲面方程写成两个变量的显函数方程或参数方程即可。对于旋转面,如果母线的方程可以表示成关于旋转轴变量的显式函数,则可以直接使用Matlab工具箱中的命令cylinder,否则必须把旋转面化成参数方程,然后使用ezmesh或ezsurf命令绘图。对于其它的二次曲面,如果可以写成显函数直接使用命令ezmesh或ezsurf,否则必须先化成参数方程。几个示例:(1)x=(s,t) 3*tan(s)*cos(t); y=(s,t) 2*tan(s)*sin(t); z=(s,t) tan(s); ezsurf(x,y,z) (2)
12、ellipsoid(0,0,0,3,2,sqrt(6) (3)ezsurf(x,y)x*y) (4)x=(s,t) 3*cos(s); y=(s,t) 2*sin(s); z=(s,t) t; ezmesh(x,y,z)(7)Matlab三维散点插值曲面图的绘制1、scatter3函数,调用方法:scatter3(X,Y,Z)示例1:x,y,z = sphere(16);X = x(:)*.5 x(:)*.75 x(:); Y = y(:)*.5 y(:)*.75 y(:); Z = z(:)*.5 z(:)*.75 z(:); S = repmat(1 .75 .5*10,numel(x),
13、1); C = repmat(1 2 3,numel(x),1); scatter3(X(:),Y(:),Z(:),S(:),C(:),filled), view(-60,60)示例2:x=4229042.63 4230585.02 4231384.96 4231773.63 4233028.58 4233296.71 4235869.68 4236288.29; y=431695.4 441585.8 432745.6 436933.7 428734.4 431946.3 428705.0 432999.5; z=1.019 1.023 1.011 1.022 1.020 1.022 1.0
14、22 1.023; scatter3(x,y,z)2、griddata函数,用来产生经插值后均匀间隔数据作图。常用的调用方法是:XI,YI,ZI = griddata(x,y,z,XI,YI,method),其中x,y,z来自关系式z=f(x,y),也可以是离散的数据点,ZI是有XI和YI插值后得到的对应点。其中method可以是linear,cubic和nearest。V1 = 1 1 0; -1 1 0; -1 -1 0; 1 -1 0; x = V1(:, 1);y = V1(:, 2);z = V1(:, 3); xmin = min(x); xmax = max(x); ymin =
15、 min(y); ymax = max(y); x0 = linspace(xmin, xmax, 20); y0 = linspace(ymin, ymax, 20); x0, y0 = meshgrid(x0, y0); z0 = griddata(x, y, z, x0, y0, v4); figure; hold on; view(3); plot3(x, y, z, r., MarkerSize, 20); plot3(x0, y0, z0, k.); col = zeros(size(z0); col(:, end) = 1;mesh(x0, y0, z0, col)示例1:x=10*(0.5-rand(1000,1); y=10*(0.5-rand(1000,1); z=sqrt(x.*x+y.*y).*(9.995+rand(1000,1)/100); clf; plot3(x,y,z,rp,markerSize,4); hold on; xx,yy=meshgrid(linspace(min(x),ma