精华内容
下载资源
问答
  • matlab绘制三维立体图

    千次阅读 2019-03-15 19:56:33
    我原以为理解并且会应用matlab绘制三维图,但动起手来,我发现各种不会,弄着弄着都有点怀疑人生了。首先,plot与plot3分别绘制二维与三维的曲线,而不是曲面,这是我的一个误区!还有,当你有x,y,z数据(行向量...

            我原以为理解并且会应用matlab绘制三维图,但动起手来,我发现各种不会,弄着弄着都有点怀疑人生了。首先,plot与plot3分别绘制二维与三维的曲线,而不是曲面,这是我的一个误区!还有,当你有x,y,z数据(行向量或者列向量)时,直接用surf(x,y,z)会给你报错,说z为矩阵的提示。还好,我在网上找到一篇博客,讲到此问题,帮我顺利解决难题,感谢笔芯!原因是:

    【Matlab】离散点绘制三维曲面方法小结 - Find your love - CSDN博客  https://blog.csdn.net/shanchuan2012/article/details/72772191

            

    以上就是我不能直接用surf的原因了。

                解决方法:

      1. 

    %确定网格坐标(x和y方向的步长均取0.1)
    [X,Y]=meshgrid(min(x):0.1:max(x),min(y):0.1:max(y)); 

    meshgrid是MATLAB(一款应用软件)中用于生成网格采样点的函数。在使用MATLAB进行3D图形绘制方面有着广泛的应用。

    [X,Y] = meshgrid(x,y)

    解释:输出X的每一行的数值都是复制的x的值;输出Y的每一列的数值都是复制的y的值。

    meshgrid_百度百科  https://wapbaike.baidu.com/item/meshgrid/3794127?fr=aladdin&ms=1&rid=7297986572924445218

    2.
    %在网格点位置插值求Z,注意:不同的插值方法得到的曲线光滑度不同
    Z=griddata(x,y,z,X,Y,'v4');

    ZI = griddata(x,y,z,XI,YI) 调整形如z = f(x,y)的曲面,使之与非等间距矢量(x,y,z)中的数据吻合。griddata 函数在指定的(XI,YI)点处插补此曲面,生成ZI.

    此曲面一定通过这些数据点。 XI 和 YI 通常构成均匀网格(与meshgrid函数生成的相同). XI 可以是行矢量,这种情况下该矢量确定一个具有固定列数的矩阵。与之类似,YI 可以是列矢量,确定一个具有固定行数的矩阵。

    [XI,YI,ZI] = griddata(x,y,z,XI,YI) 函数返回与上述矩阵相同的插补后的矩阵ZI。并返回由行矢量XI和列矢量yi形成的矩阵XI 和YI. 后者与meshgrid 函数返回的矩阵相同。

    [...] = griddata(...,method)使用规定的插补方法:

    'linear' 基于三角形的线性插补法(缺省)

    'cubic' 基于三角形的三次插补法

    'nearest' 最近邻居插补法

    'v4' MATLAB 4 griddata方法。

    这些方法定义了匹配数据点的曲面类型。'cubic' 和 'v4' 方法生成平滑曲面,而 'linear' 和 'nearest' 分别具有一阶导数和零阶导数不连续。除'v4' 外所有方法基于数据的三角化。如果方法为[], 则使用缺省的'linear' 方法。

    griddata_百度百科  https://wapbaike.baidu.com/item/griddata/3922116?fr=aladdin&ms=1&rid=7053847170498709362&sc_id=G10EwzC

    3.
    %绘制曲面
    figure(1)
    surf(X,Y,Z);

    4.
    shading interp;

    matlab函数——shading函数 - 细水长流 - CSDN博客  https://blog.csdn.net/qq_27561265/article/details/48267579

    5.
    colormap(jet);

    查看并设置当前颜色图 - MATLAB colormap - MathWorks 中国  https://ww2.mathworks.cn/help/matlab/ref/colormap.html

    要是绘制散点图,可以用scatter函数,不用连成曲线,而是单独的点

    https://www.baidu.com/link?url=GnEJwgc1YDjEaYRitf5s4pT7qLOxtEE7V3QcgWqHJmgLerUCGZmGSdd65Ycqk8DNyYHph6r7fGj5QF-5MmQgia&wd=&eqid=fc645bb800023ac5000000035c8b92d3

     

     

    展开全文
  • 1. 三维立体图的基本要件: 全空间网格化网格节点的物理属性值 2.数据准备 数据不易贴,我放在了百度网盘:点击下载数据 大概如下形式: TIP: 这里的数据矩阵为v(5276),可以看成一本27

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义。

    1. 三维立体图的基本要件:

    • 全空间网格化
    • 网格节点的物理属性值

    2.数据准备

    数据不易贴,我放在了百度网盘:点击下载数据
    大概如下形式:


    这里写图片描述

    TIP:
    这里的数据矩阵为v(5276),可以看成一本27页纸,每页绘制了5*6的网格,然后27页纸叠在一起。当你理解本图绘制后,数据可以随意制作。

    3.主要函数:sliceisosurfacepatch

    NOTE:想了解每个函数的用法可以在matlab command windows中 输入 doc slice即可获得slice的matlab详解

    4.主要代码:

    TIP:你可以将代码复制到一起运行,此处我是单独展示,分别绘图

    1.单独切片,切法可自定义。便于展示局部细节

    clc,clear
    v=csvread('vdata.txt');
    v=reshape(v,5,27,6);
    [x,y,z]=meshgrid(1:27,1:5,1:6);
    h=figure(1);
    set(h,'name','取单切片')
    subplot(221)
    slice(x,y,z,v,[],[1],[]);
    shading interp 
    set(gca,'zdir','reverse');
    axis equal
    grid on
    subplot(222)
    slice(x,y,z,v,[],[2],[]);
    shading interp 
    colormap('jet')
    set(gca,'zdir','reverse');
    axis equal
    grid on
    subplot(223)
    slice(x,y,z,v,[],[3],[]);
    shading interp 
    set(gca,'zdir','reverse');
    axis equal
    grid on
    subplot(224)
    slice(x,y,z,v,[],[4],[]);
    shading interp 
    set(gca,'zdir','reverse');
    axis equal
    grid on

    效果图:


    这里写图片描述

    2.全空间立体切片

    h2=figure(2);
    set(h2,'name','全空间切片','MenuBar','none','ToolBar','none')
    slice(x,y,z,v,[1:2:27],[2 3 4],[2 3 4 5])
    shading interp 
    colorbar 
    colormap('jet')
    set(gca,'zdir','reverse');
    axis equal
    grid on
    box on

    效果图:


    这里写图片描述

    3.立体包络图

    h3=figure(3);
    set(h3,'name','定值包络立体图','MenuBar','none','ToolBar','none')
    set(gcf,'InvertHardcopy','off')
    fw=350;                                                                                                   %%此值为最外层包络面取值
    fv=isosurface(x,y,z,v,fw);
    p=patch(fv);
    set(p,'facecolor','b','edgecolor','none');
    patch(isocaps(x,y,z,v, fw), 'FaceColor', 'interp', 'EdgeColor', 'none');
    colorbar
    colormap('jet')
    box on
    daspect([1,1,1])
    view(3)
    set(gca,'zdir','reverse','color',[0.2,0.2,0.2]);
    camlight
    camproj perspective
    lighting phong
    axis equal
    grid on
    title(['最外层表面的值为: ' , num2str(fw)]);

    NOTE:上述代码中的fw是作主要可变参数,控制最外层包络面的值

    如下演示多个fw下不同的效果图:



    展开全文
  • Python绘制三维空间图,R语言绘制空间立体图Matlab绘制空间立体图

    Python

    # 导入画图模块
    from mpl_toolkits import mplot3d
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 定义两个函数
    def z1(x,y):
        return 0.02 * x + 0.015 * y - 0.00008 * x * y + 0.00007 * x * x - 0.00002 * y * y + 15
    def z2(x,y):
        return 0.02 * x + 0.015 * y - 0.00008 * x * y + 0.00007 * x * x - 0.00002 * y * y + 20
    
    x = np.linspace(0,100,40,endpoint = False)
    y = np.linspace(0,300,40,endpoint = False)
    X, Y = np.meshgrid(x, y)
    Z1 = z1(X,Y)
    Z2 = z2(X,Y)
    fig = plt.figure()
    ax = plt.axes(projection='3d')
    ax.plot_surface(X, Y, Z1, rstride=1, cstride=1, cmap='viridis', edgecolor='none')
    ax.plot_surface(X, Y, Z2, rstride=1, cstride=1, cmap='viridis', edgecolor='none')
    # ax.plot_wireframe(X, Y, Z1,color = 'orange')
    # ax.plot_wireframe(X, Y, Z2,color = 'skyblue')
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
    #调整观察角度和方位角。这里将俯仰角设为60度,把方位角调整为35度
    ax.view_init(60, 35)
    ax.set_title('surface')
    # C:/Users/Admin/Desktop/result.jpg为图片存储路径,改为你自己的路径即可
    plt.savefig('C:/Users/Admin/Desktop/result.jpg')
    plt.show()
    

    在这里插入图片描述

    R语言绘制

    library(plotly)
    
    x = seq(0,100,5)
    y = seq(0,400,5)
    z = seq(15, 19,1)
    z1 = outer(x, y, FUN = function(x, y) 0.02*x+0.015*y-0.00008*x*y+0.00007*x^2-0.00002*y^2+15)
    z2 = outer(x, y, FUN = function(x, y) 0.02*x+0.015*y-0.00008*x*y+0.00007*x^2-0.00002*y^2+16)
    plot_ly(showscale=FALSE)%>%add_surface(x=x,y=y,z=~z1,color="black")%>%add_surface(x=x,y=y,z=~z2,colors="red")
    

    在这里插入图片描述

    Matlab绘制

    clear
    clc
    x=-300:5:100;
    y=-80:5:20;
    for i=1:length(x)
        for j=1:length(y)
            z1(i,j)=0.02*x(i)+0.015*y(j)-0.00008*x(i).*y(j)+0.00007*x(i).^2-0.00002*y(j).^2+15;
            z2(i,j)=0.02*x(i)+0.015*y(j)-0.00008*x(i).*y(j)+0.00007*x(i).^2-0.00002*y(j).^2+20;
        end
    end
    surf(y,x,z1)
    hold on
    mesh(y,x,z2)
    shading interp
    alpha(0.3)
    colormap (summer)
    axis([-100 30 -350 150 10 30])
    xlabel('x')
    ylabel('y')
    zlabel('z')
    title('surface')
    

    在这里插入图片描述

    展开全文
  • 1. 三维立体图的基本要件: 全空间网格化网格节点的物理属性值 2.数据准备 数据不易贴,我放在了百度网盘:点击下载数据 大概如下形式: TIP: 这里的数据矩阵为v(5276),可以看成一本27

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义。

    1. 三维立体图的基本要件:

    • 全空间网格化
    • 网格节点的物理属性值

    2.数据准备

    数据不易贴,我放在了百度网盘:点击下载数据
    大概如下形式:


    这里写图片描述

    TIP:
    这里的数据矩阵为v(5276),可以看成一本27页纸,每页绘制了5*6的网格,然后27页纸叠在一起。当你理解本图绘制后,数据可以随意制作。

    3.主要函数:sliceisosurfacepatch

    NOTE:想了解每个函数的用法可以在matlab command windows中 输入 doc slice即可获得slice的matlab详解

    4.主要代码:

    TIP:你可以将代码复制到一起运行,此处我是单独展示,分别绘图

    1.单独切片,切法可自定义。便于展示局部细节

    clc,clear
    v=csvread('vdata.txt');
    v=reshape(v,5,27,6);
    [x,y,z]=meshgrid(1:27,1:5,1:6);
    h=figure(1);
    set(h,'name','取单切片')
    subplot(221)
    slice(x,y,z,v,[],[1],[]);
    shading interp 
    set(gca,'zdir','reverse');
    axis equal
    grid on
    subplot(222)
    slice(x,y,z,v,[],[2],[]);
    shading interp 
    colormap('jet')
    set(gca,'zdir','reverse');
    axis equal
    grid on
    subplot(223)
    slice(x,y,z,v,[],[3],[]);
    shading interp 
    set(gca,'zdir','reverse');
    axis equal
    grid on
    subplot(224)
    slice(x,y,z,v,[],[4],[]);
    shading interp 
    set(gca,'zdir','reverse');
    axis equal
    grid on

    效果图:


    这里写图片描述

    2.全空间立体切片

    h2=figure(2);
    set(h2,'name','全空间切片','MenuBar','none','ToolBar','none')
    slice(x,y,z,v,[1:2:27],[2 3 4],[2 3 4 5])
    shading interp 
    colorbar 
    colormap('jet')
    set(gca,'zdir','reverse');
    axis equal
    grid on
    box on

    效果图:


    这里写图片描述

    3.立体包络图

    h3=figure(3);
    set(h3,'name','定值包络立体图','MenuBar','none','ToolBar','none')
    set(gcf,'InvertHardcopy','off')
    fw=350;                                                                                                   %%此值为最外层包络面取值
    fv=isosurface(x,y,z,v,fw);
    p=patch(fv);
    set(p,'facecolor','b','edgecolor','none');
    patch(isocaps(x,y,z,v, fw), 'FaceColor', 'interp', 'EdgeColor', 'none');
    colorbar
    colormap('jet')
    box on
    daspect([1,1,1])
    view(3)
    set(gca,'zdir','reverse','color',[0.2,0.2,0.2]);
    camlight
    camproj perspective
    lighting phong
    axis equal
    grid on
    title(['最外层表面的值为: ' , num2str(fw)]);

    NOTE:上述代码中的fw是作主要可变参数,控制最外层包络面的值

    如下演示多个fw下不同的效果图:



    展开全文
  • matlab开发-三维立体图

    2019-08-24 08:05:51
    matlab开发-三维立体图。使用surf命令在3D中绘制X-Y-Z数据。不需要曲线拟合工具箱。
  • 第一次用Matlab画这种三维...Matlab中有很多绘制三维立体图形的函数,搜了很多资料之后发现,slice函数比较适合画这种网状,上代码:[x,y,z]=meshgrid(0:1:4,0:1:5,0:1:4); v=x.*y; %三维立体图形 xs=[0,1,2,3,4]; y
  • matlab三维立体图

    千次阅读 2017-08-02 14:48:51
    1. 三维立体图的基本要件: 全空间网格化网格节点的物理属性值 2.数据准备 数据不易贴,我放在了百度网盘:点击下载数据 大概如下形式: TIP: 这里的数据矩阵为v(5276),可以看成一本27页纸,每页...
  • 1) 做出该花瓶三维立体图; 2) 计算其表面积;  计算其体积。  第一次参加数学建模,从来没有接触过Matlab语言,一上来就碰到这种数字图像处理的问题就懵了。完全是一边摸索,一边自学Matlab语言,一遍又一遍...
  • 1 基本命令plot3(x,y,z,'s') %绘制三维曲线plot3(x1,y1,z1,'s1',x2,y2,z2,'s2',...) %绘制多条三维曲线说明:当xyz为同维向量时,则绘制以xyz元素...2 绘制三维网线图和曲面三维网线和曲面三维立体图形,mat...
  • 三维绘制工具 函数view 实例:三维螺旋线 >> t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) grid %添加网格 plot3可以画出空间中的曲线 >> t=linspace(0,20*pi, 501); plot3...
  • Matlab实现对具有高度信息的二维矩阵三维可视化,或生成三维热度
  •  在MATLAB中,二统计分析图形很多,常见的有条形、阶梯、杆和填充等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,…)。   例 分别以条形、...
  • matlab绘制渐变

    千次阅读 2019-05-05 17:38:44
    绘制二维的渐变图参照三维立体图绘制,只是将view变成view(0,90),也就是通过三维旋转变成平面,就可以了,就可以得到二维的渐变图。 推荐博客 https://zhuanlan.zhihu.com/p/49615571 ...
  • 介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,...
  • matlab三维图形绘制.ppt

    2020-11-22 00:12:28
    绘制三维网格和曲面;2. 三维网格;3. 三维曲面 ;三绘制三维旋转体;四立体图形与图轴的控制;默认值az=-37.5el=30;五色彩的控制;2色图的显示和处理(2) 浓淡处理shading;4.3 MATLAB的特殊图形绘制; >x=3:6; >y...
  • MATLAB三维绘图 三维数据插值

    千次阅读 2020-04-29 19:54:47
    目录前言MATLAB插值函数三维绘图绘制立体曲线图绘制曲面等高线在XY平面的投影 前言 调用一下MATLAB自带的seamount.mat数据文件 load seamount plot3(x,y,z,'.','markersize',12) xlabel('Longitude'), ylabel('...
  • matlab制作的GUI,功能绘制多个曲面,并有多个功能
  • 他可以绘制各种图形,可是最近最的一个小程序,得到一些三维的数据点图,就学习了下python中的matplotlib模块,如何绘制三维图形。初学者,可能对这些第三方库安装有一定的小问题,对于一些安装第三方库经验较少的...
  • MATLAB三维坐标及函数案例实现

    千次阅读 2020-06-12 08:13:42
    目录虚拟现实技术:三维立体显示案例实现案例一:matlab 绘制三维图并标注每个点的坐标1.前言2.代码实现案例二:matlab 绘制三维曲面的函数1.mesh函数2.surf函数3.两者调用格式差不多4.比较mesh、surf的区别 案例一...

空空如也

空空如也

1 2 3 4 5
收藏数 85
精华内容 34
关键字:

matlab绘制三维立体图

matlab 订阅