精华内容
下载资源
问答
  • 画三维曲面之前,需要将三维曲面对应的平面坐标存储起来,怎么存储呢?很简单有两种方法 用矩阵X、Y分别存储每一个小矩形顶点的x坐标与y坐标,矩阵X、Y就是该矩形区域的xy平面网格坐标矩阵。 例如,在X-Y坐标平面...

    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 结语

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

    展开全文
  • 使用 matlab 绘制三维图形的方法 三维曲线 plot3 函数与 plot 函数用法十分相似其调用格式为 plot3(x1,y1,z1,选项 1,x2,y2,z2, 选项 2,xn,yn,zn,选项 n)其中每一组 x,y,z 组成一组曲线的坐标参数选项的定义和 plot ...
  • matlab绘制三维曲面

    2021-01-07 02:51:28
    matlab绘制三维曲面 平面网格数据的生成 meshgrid函数 >>x=2:8; >>y=(3:7)'; >>[X,Y]=meshgrid(x,y); >>plot(X,Y,'o'); 绘制三维曲面函数 mesh函数绘制三维网格 调用格式:mesh(x,y,z,c) 其中x,y为网格坐标...
  • 函数功能:输入线段的两个端点p1和p2的三维坐标,如[px1,py1,pz1;px2,py2,pz2],绘制p1和p2的连线并在p2处绘制由p1指向p2的箭头,箭头的宽度和长度与由p1到p2的距离成比例。
  • 详细介绍了matlab画三维统计直方图函数的方法
  • 假设函数,要求在区间内内绘制三维网格三维曲面图 %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...

    假设函数z=xe^{-x^2-y^2},要求在x\in \left [ -2,2 \right ],y\in\left[-2,2 \right ]区间内内绘制三维网格图和三维曲面图

    %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大小的矩阵
    Z=X.*exp(-X.^2-Y.^2);
    mesh(X,Y,Z);%绘制三维网图
    surf(X,Y,Z);

     

     

    展开全文
  • 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绘制三维曲面(以二维高斯函数为例)
    展开全文
  • matlab绘制三维曲面图

    千次阅读 2019-08-27 10:41:50
    例如,想要绘制h=x^2+y^2的曲面图 1.自变量的设置 如果想绘制X和Y都在-10到10之间的图像,先使用 [X,Y]=meshgrid(-10:10); 这样,X和Y都是21*21的矩阵 也可以使用 [X,Y]=meshgrid(-10:10,-10:10); 这两...

    例如,想要绘制h=x^2+y^2的曲面图

     

    1.自变量的设置

    如果想绘制X和Y都在-10到10之间的图像,先使用

    [X,Y]=meshgrid(-10:10);

    这样,X和Y都是21*21的矩阵

    也可以使用

     [X,Y]=meshgrid(-10:10,-10:10);

    这两种语句的效果是完全一样的

     

    如果想X和Y的取值范围不同,例如X在-10到10之间,Y在0到10之间,那么可以使用语句

    [X,Y]=meshgrid(-10:10,0:10);

    其他可类推

    如果改变步长:

    [X,Y]=meshgrid(-10:0.5:10,0:10);

    经过测试,这种情况下,仍然可以用后文函数命令绘图

     

    2.计算与绘图

    很容易了

    H=X.^2+Y.^2;
    mesh(X,Y,H);

    如果使用surf()命令,画出来的效果则有一些区别

    H=X.^2+Y.^2;
    surf(X,Y,H);

    展开全文
  • MATLABMATLAB三维曲面绘制【详细教程】

    万次阅读 多人点赞 2020-08-06 18:37:39
    近日需要用Matlab绘制一些三维曲面图,并对其进行标注。于是这些天花了些功夫重新梳理了一遍关于Matlab三维曲面作图的一些注意事项,在此记录备案,便于以后使用查找。 任务要求:已知函数形式,绘制三维曲面 此次...
  • 基于matlab绘制三维曲面的小方法
  • 为了便于观察图像的像素值分布,我们常常需要将灰度图像化成三维图,观察起来更加直观。mesh()出来的可能发生垂直镜像,只要再镜像一次就好了,mesh(flipdim(你的,1))。
  • 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教学视频:三维曲线和三维曲面绘制详解,本期视频时长约80分钟,通过具体的绘图案例,...深入解析了绘制三维网格三维曲面图时,平面的网格化处理过程和MATLAB的实现方法,以及三维图形的视角和着色的设置。
  • Matlab用surf函数画三维曲面(详细)

    万次阅读 多人点赞 2019-07-08 15:24:41
    首先三维数据如下,第一行第一列代表横纵坐标,然后其它的值是z值 然后要将3个维度的值分别做成一个矩阵 X: Y: Z: 然后在Matlab的工作空间里生产变量: 这样就可以使用surf函数了 效果: ...
  • 写论文,从二维变三维空间,对三维工作空间分析,希望创建漂亮的工作空间示意。二维区域着色已经在之前博文提到过了:Matlab不规则区域渐变色填充及注意事项。这里主要讲三维曲面着色。 方法 实现绘制曲面函数有...
  • 绘制三维曲面图步骤:1): 对数据进行处理,得到三维曲面上的点坐标组方法有: 1、将自变量离散, x=xmin:dx:xmax y=ymin:dy:ymax 2、利用meshgrid 指令 生成 x-y 矩阵2):利用函数z=f(x,y) 计算函数值3) 绘图...
  • Matlab绘制三维曲面图、等高线图等

    千次阅读 多人点赞 2021-01-18 18:59:43
    最近需要用到Matlab绘制三维的地形等,即通过已知的山地海拔数据,利用Matlab软件使用插值法绘制三维曲面图、等高线图、伪彩色、散点。 一、Matlab插值 插值就是在已知数据之间计算估计值的过程,是一种实用...
  • %里面的小球 shading interp %使用插值的方式进行着色 hold on,mesh(X,Y,Z,colormap(hot, hold off hidden off %透视外面大球看到里面小球 axis equal,axis off %坐标轴个方向上刻度增量相同并消隐
  • 数值分析Matlab绘制三维数据曲面图

    千次阅读 2017-12-14 09:57:22
    主要使用了matlab提供的meshgrid和surf。一个细节是matlab中的 ./ 如果是单数,是一般的数学除法,如果是多维矩阵,则是多维矩阵对应元素的除法。matlab代码:xi=-20:0.3:20; yi=-10:0.3:10; [x,y]=meshgrid(xi,yi)...
  • MATLAB----绘制三维曲面

    2021-08-18 16:32:57
    本篇参考于:中国大学慕课科学计算与MATLAB统计,专题四“4.5三维曲面绘制格网meshgrid 格网和曲面surf&mesh 其他形式surfc,surfl&meshc,meshz 标准三维曲面函数sphere&cylinder 三个方程两个...
  • matlab三维图形绘制函数

    万次阅读 2016-08-27 17:25:38
    1.plot3 plot3是最基本的三维图形函数,它将二维plot函数的功能拓展到三维空间,其基本的调用格式为plot3(x1,y1,z1,'图形设置选项1',x2,y2,z2,'图形设置选项...eg:绘制z=f(x,y)所代表的三维曲面图,x=a:dx:b;y=c:dy:d
  • matlab 绘制三维空间隐函数自由曲面

    千次阅读 2019-07-16 11:04:37
    本博客介绍了一个常用于三维函数绘制函数,利用自由曲面-球面为事例,介绍该函数的用法。 本功能实现主要的两个函数 isofurface patch 其实主要是第一个函数有用 2.isosurface介绍 matlab2014a 版给的函数...
  • matlab是一款功能强大的通用工程数学软件。...然而十分可惜的是与之对应的ezsurf和ezmesh却对隐函数曲面F(x,y,z)=0的绘制无能为力。那么matlab究竟有没有用来绘制诸如F(x,y,z)=0的命令呢?答案毫无疑问是肯定的。事实上
  • 三维阴影曲面绘制 前一节我们绘制三维曲面中,各个小的曲面片都是由四边形组成的,这个四边形的4条边绘制有某一种颜色,但其内部却无颜色(即为绘图窗口的底色)。 本节将介绍另外一种三维曲面的表示方法——...
  • matlab如何绘制三维曲面图

    千次阅读 2017-03-22 15:24:55
    许多时候需要绘制三维曲面图,比如知道三维数据(x,y,z),如何绘制三维图像? 以二元函数图 z = xexp(-x^2-y^2) 为例讲解基本操作,首先需要利用meshgrid函数生成X-Y平面的网格数据,如下所示: % 生成二...
  • MATLAB三维图形绘制

    2016-01-08 15:33:45
    MATLAB绘制三维图的程序 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。mesh(x,y,z,c):网格曲面,将数据点在空间中描出,并连成网格。 surf(x,y,z,c):完整曲面,将数据点所表示曲面画出。...
  • 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]; ...
  • MATLAB绘图—三维绘图-I》博客主要讲了三维曲线绘制,本博客主要讲 三维网格 曲面图 柱面和球面 三维图形等值线 二、三维曲面图 1、surf函数 主要函数为:surf用法和mesh一样: mesh函数语法 close all [X...
  • y2,z2,选项 2,xn,yn,zn,选项 n) 其中每一组 x,y,z 组成一组曲线的坐标参数选项的定义和 plot 函数相同当x,y,z 是同 维向量时则 x,y,z 对应元素构成一条三维曲线当 x,y,z 是同维矩阵时则以 x,y,z 对应列 元素绘制三维...

空空如也

空空如也

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

matlab绘制三维曲面图函数

matlab 订阅