精华内容
下载资源
问答
  • MATLAB教学视频:三维曲线和三维曲面的绘制详解,本期视频时长约80分钟,通过具体的绘图案例,详细地讲解了在MATLAB中如何实现三维曲线和三维曲面的绘制;深入解析了绘制三维网格图和三维曲面图时,平面的网格化处理...
  • 针对某矿山数据进行了不同边界品位的矿体自动建模实验,与显式方法建模结果对比表明,基于径向基函数隐式曲面的矿体建模方法自动化程度高、模型光滑且无拓扑错误,可为国内数字矿山与地学三维软件的研发提供新方案。
  • 曲面进行拟合,拟合效果还是比较好的,亲测有效哦!!
  • 本文是科学计算与MATLAB语言的专题四的第5小节总结笔记,并结合了自己一点的理解,看完本文,可以轻松利用MATLAB相关函数,画漂亮的三维曲面。 1 平面网格数据的生成 在画三维曲面之前,需要将三维曲面对应的平面...

    0 前言

    本文是科学计算与MATLAB语言的专题四的第5小节总结笔记,并结合了自己一点的理解,看完本文,可以轻松利用MATLAB相关函数,画出漂亮的三维曲面。

    1 平面网格数据的生成

    在画三维曲面之前,需要将三维曲面对应的平面坐标存储起来,怎么存储呢?很简单有两种方法。
    用矩阵X、Y分别存储每一个小矩形顶点的x坐标与y坐标,矩阵X、Y就是该矩形区域的xy平面网格坐标矩阵。
    例如,在X-Y坐标平面生成一个由(2,6),(3,8)围成的网格坐标。
    在MATLAB中,产生平面区域内的网格坐标矩阵有两种方法。
    利用矩阵运算生成

    x=2:6; 
    y=(3:8)'; 
    X=ones(size(y))*x;
    Y=y*ones(size(x));
    

    X和Y相同位置上的元素,如 X 32 X_{32} X32 Y 32 Y_{32} Y32是区域的第3行第2列网格点的坐标(3,5)。
    利用meshgrid函数生成
    这种方法是我们需要的!简洁,明了!

    [X,Y]=meshgrid(x,y);
    其中
    参数x、y为向量,存储网格点坐标的X、Y为矩阵。

    x=2:1:6;
    y=(3:1:8)';
    [X,Y]=meshgrid(x,y);
    

    第3行命令生成的网格坐标矩阵X、Y与第一种得到的相同。
    若根据每一个网格点上的x、y坐标求函数值z,则得到函数值矩阵Z。矩阵X、Y、Z中的各个列向量,对应于一条曲线数据点的坐标。
    例1 绘制空间曲线。
    plot3.7

    x = 2:6; 
    y = (3:8)';
    [X, Y] = meshgrid(x, y);
    Z = randn(size(X));
    plot3(X,Y,Z)
    grid on;
    

    2 绘制三维曲面的函数

    2.1 mesh函数和surf函数的一般召唤方式

    mesh(x,y,z,c)
    surf(x,y,z,c)
    其中
    x、y是网格坐标矩阵
    z是网格点上的高度矩阵
    c用于指定在不同高度下的曲面颜色
    c省略时,颜色的设定正比于图形的高度。
    例2 绘制三维曲面图 z = x e − x 2 − y 2 z=xe^{-x^2-y^2} z=xex2y2
    plot3.8

    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
    

    2.2 其他召唤方式

    mesh(z,c)
    surf(z,c)
    当x、y省略时,z矩阵的第2维下标当作x轴坐标,z矩阵的第1维下标当作y轴坐标。
    例如,绘制一个曲面。
    plot3.9

    t=1:5; 
    z=[0.5*t;2*t;3*t];
    mesh(z);
    

    注意:z是一个为3行5列的矩阵,因此X轴坐标为1、2 、3 、4、5,Y轴坐标为1、2、3.

    2.3 mesh、surf函数的亲戚朋友

    函数名称函数说明
    meshc等高线三维网格曲面
    meshz底座三维网格曲面
    surfc等高线曲面
    surfl光照效果曲面

    例3 用4种方式绘制函数 z = ( x − 1 ) 2 + ( y − 2 ) 2 − 1 z=(x−1)^2+(y−2)^2−1 z=(x1)2+(y2)21的曲面图。其中, x ∈ [ 0 , 2 ] , y ∈ [ 1 , 3 ] 。 x∈[0,2],y∈[1,3]。 x[0,2]y[1,3]
    plot3.10

    [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);title('meshc(x,y,z)')
    subplot(2,2,2);
    meshz(x,y,z);title('meshz(x,y,z)')
    subplot(2,2,3);
    surfc(x,y,z);title('surfc(x,y,z)')
    subplot(2,2,4);
    surfl(x,y,z); title('surfl(x,y,z)')
    

    3.标准三维曲面

    3.1 sphere函数-画个球

    [x,y,z]=sphere(n)
    产生3个(n+1)阶的方阵,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。

    3.2 cylinder函数

    [x,y,z]=cylinder(R,n)
    其中,参数R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。
    例4 用cylinder函数分别绘制柱面、花瓶和圆锥面。
    plot3.11

    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函数绘制两个相互垂直且直径相等的圆柱面的相交图形。
    plot3.11-12

    [x,y,z]= cylinder(1,60);
    z=[-1*z(2,:);z(2,:)];
    surf(x,y,z)
    hold on
    surf(y,z,x)
    axis equal
    

    3.3 peaks 函数-峰值曲面图

    peaks函数的召唤方式:
    peaks(n)返回一个 n×n 矩阵
    peaks(V)返回一个 n×n 矩阵,其中 n = length(V)
    peaks(x,y)在给定的 X 和 Y(必须大小相同)处计算 peaks 并返回大小相同的矩阵
    peaks
    具体使用方式参考官方文档
    多峰函数: z = 3 ( 1 − x ) 2 e − ( x 2 ) − ( y + 1 ) 2 − 10 ( x 5 − x 3 − y 5 ) e ( − x 2 − y 2 ) − 1 3 e − ( x + 1 ) 2 − y 2 z = 3(1-x)^2e^{-(x^2) - (y+1)^2 }-10(\frac{x}{5} - x^3 - y^5)e^{(-x^2-y^2})-\frac{1}{3}e^{-(x+1)^2 - y^2} z=3(1x)2e(x2)(y+1)210(5xx3y5)e(x2y2)31e(x+1)2y2
    plot3.12

    [x,y]=peaks(10);
    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) ;
    surf(z)
    

    也可以通过以下命令绘制出此图。

    figure
    peaks(10)
    

    plot3.13
    是不是一样?好像不是,坐标轴间隔、标注不一样呀,哈哈哈。目前我也不知道这个函数有啥用,不过好像很厉害的亚子!

    3.4 fmesh函数和fsurf函数-三个方程 两个自变量

    如果一个图形由三个参数方程决定,有两个自变量,那么可以使用fmesh函数和fsurf函数。
    fmesh(funx,funy,funz,uvlims)
    fsurf(funx,funy,funz,uvlims)
    其中,funx、funy、funz代表定义曲面x、y、z坐标的函数,通常采用函数句柄的形式。
    uwlims为funx、funy和funz的自变量的取值范围,用4元向量(umin,umax,vmin,vmaxd描述,默认为[-5,5,-5,5]。
    例6 绘制螺旋曲面 { x = u s i n v y = − u c o s v , ( − 5 ≤ u ≤ 5 , − 5 ≤ v ≤ 2 ) z = v \left\{ \begin{aligned} x&=usinv\\ y&=-ucosv,(-5 \leq u\leq5,-5\leq v\leq2)\\ z&=v \end{aligned}\right. xyz=usinv=ucosv,(5u5,5v2)=v

    funx = @(u,v) u.*sin(v);
    funy = @(u,v) -u.*cos(v);
    funz = @(u,v) v;
    fsurf(funx,funy,funz,[-5 5 -5 -2])%画出下半部分
    hold on
    fmesh(funx,funy,funz,[-5 5 -2 2])%画出上半部分
    hold off
    

    4 结语

    您是否学会了呢?如果本文对您有帮助,可以点个赞哈,如有错误疑问,请您指出哈。

    展开全文
  • 1.绘制三维图形的基本函数   最基本的三维绘图函数为plot3; plot3与plot用法十分相似,调用格式: plot(x1,y1,z1,选项1,x2,y2,z2,选项2,...,xn,yn,zn,选项n) 当x,y,z是同维向量时,则x,y,z,对应元素...

    1.绘制三维图形的基本函数

        

    最基本的三维绘图函数为plot3;
    plot3与plot用法十分相似,调用格式:
    
    plot(x1,y1,z1,选项1,x2,y2,z2,选项2,...,xn,yn,zn,选项n)
    当x,y,z是同维向量时,则x,y,z,对应元素构成一条三维曲线;
    当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。
    

      例:

    程序如下:

     t=0:pi/50:2*pi;
    x=8*cos(t);
    y=4*sqrt(2)*sin(t);
    z=-4*sqrt(2)*sin(t);
    plot3(x,y,z,'p');
    title('Line in 3-D Space');
    text(0,0,0,'origin');
    xlabel('x'),ylabel('y'),zlabel('z');
    grid;
    

      运行结果:

    2.三维曲面

    2.1平面网格坐标矩阵的生成

      绘制z=f(x,y)所代表的三维曲面图,先要在xy平面选定一个矩形区域,假定矩形区域D=[a,b]*[c,d],然后将[a,b]在x方向分成m份,将[c,d]在y方向分成n份,由各划分点分别作平行于两坐标轴的直线,将区域D分成m*n个小矩形,生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数绘图。

      产生平面区域内的网格坐标矩阵有两种方法:

      1.利用矩阵运算生成、

    x=a:dx:b;
    y=(c:dy:d)';
    X=ones(size(y))*x;
    Y=y*ones(size(x));
    语句执行后,
    矩阵X的每一行都是向量x,行数等于向量y的元素个数,
    矩阵Y的每一列都是向量y,列数等于向量x的元素个数。
    于是对于矩阵X,Y来说,它们位置(i,j)上的元素值(X(i,j),Y(i,j))就是所要形成的平面网格
    在位置(i,j)上的X,Y坐标。可根据每一个网格点上的x,y坐标求这个点对应的z,则得到Z矩阵。
    显然,X,Y,Z各列或各行所对应坐标,对应于一条空间曲线,空间曲线的集合将可组成空间曲面。
    

      2.利用meshgrid函数生成。

     

    调用格式:
    x=a:dx:b;
    y=c:dy:d;
    [x,y]=meshgrid(x,y);
    语句执行后得到与方法1相同的矩阵X,Y。
    当向量x=y时,函数可写成meshgrid(x);
    

      例:利用法网格坐标阵巧解不定方程:

      已知6<x<30,15<y<36,求不定方程2x+5y=126的整数解。程序如下:

    x=7:29;
    y=16:35;
    [x,y]=meshgrid(x,y); %在[7,29]*[16,35]区域生成网格坐标
    z=2*x+5*y;
    k=find(z==126);%找出解的位置,即k为z中元素等于126的元素的位置
    x(k)',y(k)'%输出对应位置的x,y即方程的解
    
    输出:
    ans =
    
         8    13    18    23
    
    
    ans =
    
        22    20    18    16
    %即方程有4组解:(8,22),(13,20),(18,18)(23,16).
    
    输出:
    >> k
    
    k =
    
        27
       125
       223
       321
    
    输出(关于find函数):
    >> [a,b]=find(z==126)
    
    a =
    
         7
         5
         3
         1
    
    
    b =
    
         2
         7
        12
        17
    >> x(7,2)
    
    ans =
    
         8
    

    2.2 绘制三维曲面的函数

    两个函数:

    mesh(x,y,z,c)%用于绘制三维网格图,在不需要绘制特别精细三维曲面时使用。
    surf(x,y,z,c)%用于绘制三维曲面,各线条之间的补面用颜色填充。
    
    关于x,y,z,c:
    
    one:通常x,y,z是同维矩阵,x,y是网格坐标矩阵,z是网格点的高度矩阵,c用于指定在不同高度下的颜色范围。
    two:c省略时,MATLAB认为c=z,即颜色的高度正比于图形高度,以得到层次分明的三维图形。当x,y省略时,把z矩阵的列下标当做x轴坐标,把z矩阵的行下标当做y轴坐标,然后绘制三维曲面图。
    three:当x,y是向量时,要求x的长度必须等于z矩阵的列数,y的长度等于z矩阵的行数,x,y向量元素的组合构成网格点的x,y坐标,z坐标则取自z矩阵,然后绘制三维曲面图。
    

    例5.15:用三维曲面图表现函数z=sinycosx。

    program1:用meshgrid+mesh

    x=0:0.1:2*pi;
    [x,y]=meshgrid(x);
    z=sin(y).*cos(x);
    mesh(x,y,z);
    xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
    title('mesh');

    效果同:

    x=0:0.1:2*pi;
    y=0:0.1:2*pi;
    z=sin(y')*cos(x);
    mesh(x,y,z);
    xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');

      运行结果:

    program2:用meshgrid+surf

    x=0:0.1:2*pi;
    [x,y]=meshgrid(x);
    z=sin(y).*cos(x);
    surf(x,y,z);
    xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
    title('meshgrid+surf');
    

      

    program3:用一般绘图函数plot3

    x=0:0.1:2*pi;
    [x,y]=meshgrid(x);
    z=sin(y).*cos(x);
    plot3(x,y,z);
    xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
    title('meshgrid+plot3-1f');
    grid;
    

      

    例5.16:绘制两个直径相等的圆管的相交图形。

    程序如下:

    %两个等直径圆管的交线
    
    m=60;%m是圆圈的密集度,表示画60个圆圈
    z=1.2*(0:m)/m;%1.2是圆柱高
    r=ones(size(z));
    theta=(0:m)/m*2*pi;
    
    x1=r'*cos(theta);%每行都是一个cos(theta)
    y1=r'*sin(theta);%每行都是一个sin(theta)
    %y1=y1';
    z1=z'*ones(1,m+1);%每行的z相同
    
    surf(x1,y1,z1);%绘图,立起的圆柱
    
    %axis equal,axis off
    hold on 
    
    x=(-m:2:m)/m;
    x2=x'*ones(1,m+1);%m+1个x列
    y2=r'*cos(theta);%以y和z为底画圆
    %y2=y2';
    z2=r'*sin(theta);
    
    surf(x2,y2,z2);
    
    axis equal,axis off
    title('两个等直径圆管的交线');
    hold off
    

      运行结果:

     将上述例5.16中程序的%备注取消,即将第一图的y阵第二图的z阵转置,这样在底层面就不再是圆线了,效果如下:

    例5.17 分析由函数z=x^2-2y^2构成的曲面形状及与平面z=a的交线。

     

    [x,y]=meshgrid(-10:0.2:10);
    z1=(x.^2-2*y.^2)+eps;%第一个曲面
    a=input('a=?');
    z2=a*ones(size(x));%第二个曲面(本质是一个数乘)
    subplot(1,2,1);
    mesh(x,y,z1);hold on;mesh(x,y,z2);%分别画出两个曲面
    v=[-10,10,-10,10,-100,100];axis(v);grid;%第一个子图的坐标设置
    hold off;
    r0=(abs(z1-z2)<=1);%求两曲面z坐标差小于1的点,r0只有0、1值
    xx=r0.*x;yy=r0.*y;zz=r0.*z2;%求这些点上的x,y,z坐标,即交线坐标
    subplot(1,2,2);
    plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'*');%在第2子图画出交线
    axis(v);grid;%第2子图的坐标设置

    a=?8
    size(x)

    ans =

    101 101


      

      此外,还有两个和mesh函数相似的函数,即带等高线的三维网格曲面函数meshc带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。

          例5.18 在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);
    meshc(x,y,z);
    title('meshz(x,y,z)')
    subplot(2,2,2);
    meshz(x,y,z);
    title('meshz(x,y,z)')
    subplot(2,2,3);
    surfc(x,y,z)
    title('surfc(x,y,z)')
    subplot(2,2,4);
    surfl(x,y,z)
    title('surf1(x,y,z)')
    

      

      3.标准三维曲面

      MATLAB提供了一些函数用于绘制标准三维曲面,这些函数可以产生相应的绘图数据,常用于三维图形的演示。例如:

    sphere函数和cylinder函数分别用于绘制三维球面和柱面。其调用格式为:

    sphere函数的调用格式为:
    [x,y,z]=sphere(n)
    该函数将产生(n+1)*(n+1)矩阵x,y,z,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。
    若在调用该函数时不带输出参数,则直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20.若n值取得较小,则将绘制出多面体表面图。
    
    
    
    
    cylinder函数调用格式为:
    [x,y,z]=cylinder(R,n)
    其中,R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。例如,cylinder(3)生成一个圆柱,cylinder([10,1])生成一个圆锥,
    而
    t=0:pi/100:4*pi;
    R=sin(t);
    cylinder(R,30)
    生成一个正弦柱面。
    另外,生成矩阵的大小与R向量的长度及n有关。其余与sphere函数相同。
    

      

     

    MATLAB还有一个peaks函数,称为多峰函数,,常用于三维曲面的演示。该函数可以用来生成绘图数据矩阵,矩阵元素由函数:

    在矩形区域[-3,3]*[-3,3]的等分网格点的函数值确定。例如:

    z=peaks(30);

    将生成一个30*30矩阵z,即分别沿x和y方向将区间[-3,3]等分成29份,并计算这些网格点上的函数值。默认的等分数是48,即p=peaks将生成一个49*49矩阵p。也可以根据风格坐标矩阵x、y重新计算函数值矩阵。例如:

    [x,y]=meshgrid(-5:0.1:5);

    z=peaks(x,y);

    生成的数值矩阵可以作为mesh、surf等函数参数而绘制出发多峰函数曲面图。另处,若在调用peaks函数时不带输出参数,则直接绘制出多峰函数曲面图。

    例5.19 绘制标准三维曲面图形。

    程序如下:

    t=0:pi/20:2*pi;
    [x,y,z]=cylinder(2+sin(t),30);
    subplot(1,3,1);
    surf(x,y,z);
    subplot(1,3,2);
    [x,y,z]=sphere;
    surf(x,y,z);
    subplot(1,3,3);
    [x,y,z]=peaks(30);
    meshz(x,y,z);
    

      

    4.其它三维图形

    4.1 三维条形图

    bar3函数绘制三维条形图,调用格式为:
    bar3(y)
    bar3(x,y)
    在第一种格式中,y的每个元素对应一个条形。
    第二种格式在x指定 的位置上绘制y中元素的条形图,X为向量,当y为向量时,x元素个数与y列数相同,当y为矩阵时,x元素与y的行数相同。
    

    例:1.bar3(y)

    (1)当y为矩阵时,以元素下标为坐标,以元素值为高度,绘制条形图。

    >> y=magic(5)
    
    y =
    
        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
        11    18    25     2     9
    
    >> y(5,:)=[]%删除第五行
    
    y =
    
        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
    
    >> bar3(y)
    

      

    (2)当y为向量时,也是以下标为坐标,为值为高度。

    >> y=[1 3 5 7 2]
    
    y =
    
         1     3     5     7     2
    
    >> bar3(y)
    >> 
    

      

    2.bar3(x,y)

    (1)x为向量,y为向量

    >> y
    
    y =
    
         1     3     5     7     9    11
    
    >> x
    
    x =
    
         1     3     5     4     8    11
    
    >> bar3(x,y)
    >> 
    

      

    (1)x为向量,y为矩阵(x元素改变y矩阵的x坐标)

    y =
    
        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
    
    >> x=[1 3 5 9]
    
    x =
    
         1     3     5     9
    
    >> bar3(x,y)
    

      

     

    4.2 三维杆图
    stem3(z)
    stem3(x,y,z)
    第一种格式将 数据序列z 表示为xy平面向上延伸的杆图,x和y自动生成。
    第二种格式在x和y指定位置上绘制 数据序列z的杆图,x,y,z的维数必须相同。
    

    1.stem3(z)

    (1)z为矩阵,以下标为坐标,值为杆值

    z =
    
        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
    
    >> stem3(z)
    

      

    (2)z为向量,以下标为坐标,值为杆值

    z=y(1,:)
    
    z =
    
        17    24     1     8    15
    
    >> stem3(z)
    >> stem(z)
    

      

      

    2.stem3(x,y,z)

    (1)x,y,z均为向量,以(x,y)为对应坐标z为值

    x =
    
         1     2     5     9     6
    
    >> y=x
    
    y =
    
         1     2     5     9     6
    
    >> z=x
    
    z =
    
         1     2     5     9     6
    
    >> stem3(x,y,z)
    >> 
    

      

    4.3 三维饼图

    pie3(x)
    其中x为向量,用x中的数据绘制一个三维饼图。
    

      

     pie3([2347 1827 2043 3025])
     pie([2347 1827 2043 3025])
    

      

    4.4 填充多边形

    fill3(x,y,z,c)
    使用x,y,z作为多边形的顶点,用c指定了填充的颜色。
    

      

    fill(x,y,c)
    以(x,y)为点,c为颜色图,连点并填充点间面。
    x =
    
         1     5     6     8
    
    >> y
    
    y =
    
         2     6     4     6
    
    >> z=[1 2 3 4 5 ]
    
    z =
    
         1     2     3     4     5
    
    >> fill(x,y,z)
    

      

     fill3(rand(3,5),rand(3,5),rand(3,5),'y')
    

      

    转载于:https://www.cnblogs.com/freesblog/p/4102560.html

    展开全文
  • Matlab绘制三维曲面(以二维高斯函数为例)  寒假学习了一下Python下的 NumPy和py matlab ,感觉不是很容易上手。来学校之后,决定继续看完数字图像处理一书。还是想按照上学期的模式,边看边实现书中的算法。上...
    原文地址为:
    Matlab绘制三维曲面(以二维高斯函数为例)
    

      寒假学习了一下Python下的NumPy和pymatlab,感觉不是很容易上手。来学校之后,决定继续看完数字图像处理一书。还是想按照上学期的模式,边看边实现书中的算法。上学期看的时候,是用C语言实现的,发现写程序太耗时间了,所以决定还是学习下Matlab吧(寒假莫有学会Python中的那些库应用。。。)
      经过两天的学习,终于看完了一本关于Matlab的基础书。对于Matlab有了一个基本的了解,感觉Matlab最大的优势在于能够快速的将你数据可视化出来,不管对于科学计算还是图像处理,这都很重要,因为它能让你有一个直观的认识。

      下面就贴一下我绘制的第一个三维曲面图(二维高斯函数

      代码: 

    % 绘制二维高斯曲面
    % 公式: p(z) = exp(-(z-u)^2/(2*d^2)/(sqrt(2*pi)*d)
    % x y 变量
    X = 0 : 1 : 50;
    Y = 0 : 1: 50;

    % 方差
    d02= 25;
    % 均值(25, 25)
    Z = zeros(51, 51);
    for row = 1 : 1 : 51
    for col = 1 : 1 : 51
    Z(row, col) = (X(row) - 25) .* (X(row)-25) + (Y(col) - 25) .* (Y(col) - 25);
    end
    end

    Z = -Z/(2*d02);

    Z = exp(Z) / (sqrt(2*pi) * sqrt(d02));
    % 显示高斯曲面
    surf(X, Y, Z);

      显示效果图:

    Matlab二维高斯图

     


    转载请注明本文地址: Matlab绘制三维曲面(以二维高斯函数为例)
    展开全文
  •  例:创建一个按倍数递增的正弦函数二维数组,显示三维曲面图。  · 第1步:在程序框图窗口利用For循环创建一个正弦曲线一维数组,共100个数据点,每个正弦周期内40个点,如图1所示。  · 第2步:在上一步创建...
  • MATLAB绘图—三维曲面绘图(surf) 原创不易,路过的各位大佬请点个赞 《MATLAB绘图—三维绘图-I》博客主要讲了三维曲线图的绘制,本博客主要讲 三维网格图 曲面图 柱面和球面图 三维图形等值线 二、三维曲面图 1、...

    MATLAB绘图—三维曲面绘图(surf)

    原创不易,路过的各位大佬请点个赞

    《MATLAB绘图—三维绘图-I》博客主要讲了三维曲线图的绘制,本博客主要讲
    三维曲线绘图
    三维曲面图
    曲面图
    柱面和球面图
    三维等值线绘图
    https://blog.csdn.net/weixin_44044161/article/details/116742144

    二、三维曲面图

    1、surf函数

    主要函数为:surf用法和mesh一样:
    mesh函数语法

    close all
     [X,Y,Z]=peaks(30);
     surf(X,Y,Z)
     title('山峰表面')
     xlabel('x-axis'),ylabel('y-axis '),zlabel('z-axis')
     grid on
    

    在这里插入图片描述

    2、 ezsurf函数

    该命令是专门用来绘制符号函数 f ( x , y ) f(x,y) f(x,y)的表面图,

    在这里插入图片描述

     close all
     syms x y
     f=sin(x)*exp(y)-cos(y)*exp(x)+ exp(x)+ exp(y);
     ezsurf(f,[-pi,pi],30)
     title('带网格线的三维表面图')
    

    在这里插入图片描述

    3、surfc函数

    surfc:加等高线

     close all
     t=-4:0.1:4;
     [X,Y]=meshgrid(t);
     Z=peaks(X,Y);hidden off
     surfc(X,Y,Z)
     title('meshc')
    
    

    在这里插入图片描述

    原创不易,路过的各位大佬请点个赞

    展开全文
  • 这里主要讲三维曲面着色。 方法 实现绘制曲面的函数有不少,典型如下 函数 含义 mesh、surf 曲面图 meshc、surfc 下方带有等高线图的曲面图 meshz 带帷幕图(参考平面)的曲面图 pcolor
  • Matlab用surf函数三维曲面(详细)

    万次阅读 多人点赞 2019-07-08 15:24:41
    首先三维数据如下,第一行第一列代表横纵坐标,然后其它的值是z值 然后要将3个维度的值分别做成一个矩阵 X: Y: Z: 然后在Matlab的工作空间里生产变量: 这样就可以使用surf函数了 效果图: ...
  • MATLAB三维画图函数使用总结

    千次阅读 多人点赞 2019-08-01 19:20:01
    接上一篇,本篇主要是三维画图函数的使用总结。在某些数据处理场景中,将数据处理成三维图形会使问题变得更加明晰。 三维绘图函数总结: 代码实现: 【注】每个绘图函数都至少有一个使用实例。注意使用时将代码...
  •  例:创建一个按倍数递增的正弦函数二维数组,显示三维曲面图。  · 第1步:在程序框图窗口利用For循环创建一个正弦曲线一维数组,共100个数据点,每个正弦周期内40个点,如图1所示。  · 第2步:在上一步创建...
  • matlab绘制三维曲面

    2021-01-07 02:51:28
    绘制三维曲面函数 mesh函数绘制三维网格图 调用格式:mesh(x,y,z,c) 其中x,y为网格坐标矩阵;z是网格点上的高度矩阵;c表示不同高度下的曲面颜色,默认正比于图形高度,c=z; 当x,y省略时,z的第二维下标当作x轴...
  • 假设函数,要求在区间内内绘制三维网格图和三维曲面图 %mesh三维曲面绘图 x=-2:.2:2;%生成间隔为0.2在-2到2的向量数据,-2到2之间有4/2.0+1=21个值 y=-2:.2:2; [X,Y]=meshgrid(x,y);%生成网格数据,X,Y都是21*21...
  • MATLAB三维曲线与曲面绘图

    千次阅读 2020-07-31 09:58:39
    三维曲线 plot3函数 plot3(x, y, z) 其中,参数x、y、z组成一组曲线的坐标。 若 x , y, z 是等长行向量,则根据向量的位置确定坐标, 如 (x1, y1, z1) x=[0.2, 1.8, 2.5]; y=[1.3, 2.8, 1.1]; z=[0.4, 1.2, 1.6]; ...
  • 大一的数学实验其中一部分,利用mathematica绘制空间曲面数学实验的两个例子及其代码
  • 首先从理论上对简单曲面进行分析,计算实现有限曲面全覆盖所需的最少节点数,在对三维曲面进行网格划分以及根据三维感知盲区改进适应度函数后,引入差分进化(DE)算法对随机部署在三维空间中的传感器节点的位置...
  • 【MATLAB】MATLAB三维曲面绘制【详细教程】

    万次阅读 多人点赞 2020-08-06 18:37:39
    任务要求:已知函数形式,绘制三维曲面 此次以下函数为例,介绍Matlab三维曲面的绘制方式 z=1−x2+(y−1)2 z = 1-\sqrt{x^{2}+(y-1)^{2}} z=1−x2+(y−1)2​ 成品效果图如下: 绘图讲解: 1. 绘制三维图像 [X,Y]...
  • Matlab之三维曲面的绘制

    千次阅读 2020-02-17 20:15:09
    在绘制曲面之前,需要先将数据点生成平面数据网格,其生成的数据是网格的坐标。 生成的方式有两种: (1)利用矩阵运算生成 代码示例: x = 2:6; y = (3:8)'; X = ones(size(y))*x; Y = y*ones(size(x)); 其中...
  • 曲面上提取三维散点matlab代码
  • 基于matlab绘制三维曲面的小方法
  • MATLAB----绘制三维曲面

    2021-08-18 16:32:57
    本篇参考于:中国大学慕课...标准三维曲面函数sphere&cylinder 三个方程两个变量使用fsurf和fmesh 1.meshgrid函数生成网格 eg.绘制空间曲线 x=2:6 y=(3:8)' [X,Y]=meshgrid(x,y) Z=randn(size(X)) plot3(X,Y,Z)
  • labview三维曲面图.vi

    2021-10-27 16:40:54
    建立了一个随x值增加,幅值增加的三维sin函数
  • matlab 绘制三维空间隐函数自由曲面

    千次阅读 2019-07-16 11:04:37
    本博客介绍了一个常用于三维函数绘制的函数,利用自由曲面-球面为事例,介绍该函数的用法。 本功能实现主要的两个函数 isofurface patch 其实主要是第一个函数有用 2.isosurface介绍 matlab2014a 版给的函数...
  • 本文是博客文章:《MATLAB数学建模:数据图形可视化》的第五章:三维绘图函数部分。
  • 绘制三维曲面图步骤:1): 对数据进行处理,得到三维曲面上的点坐标组方法有: 1、将自变量离散, x=xmin:dx:xmax y=ymin:dy:ymax 2、利用meshgrid 指令 生成 x-y 矩阵2):利用函数z=f(x,y) 计算函数值3) 绘图...
  • 为了克服噪声导致的相位展开不连续现象,用Canny边缘检测算法获取重建模型的...同时,本算法可以解决枝切法中因噪声过大导致的相位展开稳定性低以及最小二乘法在重建模型中断层的问题,能很好地克服噪声并进行三维重建。
  • 函数功能:输入线段的两个端点p1和p2的三维坐标,如[px1,py1,pz1;px2,py2,pz2],绘制p1和p2的连线并在p2处绘制由p1指向p2的箭头,箭头的宽度和长度与由p1到p2的距离成比例。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,429
精华内容 5,371
关键字:

绘出函数的三维曲面