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

    千次阅读 2017-08-02 14:48:51
    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下不同的效果图:



    csdn博客与此同步,欢迎转载,注明出处。有任何问题和建议,欢迎留言讨论,也可以发我邮箱wenbya@foxmail.com
    展开全文
  • matlab 三维立体图生成器(双眼视差)
  • matlab开发-三维立体图

    2019-08-24 08:05:51
    matlab开发-三维立体图。使用surf命令在3D中绘制X-Y-Z数据。不需要曲线拟合工具箱。
  • 我原以为理解并且会应用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/7277219126803ac321cfe8aaa7f630a5b0e0f537.png

    80e247b8520156941fc85ef7c96615e1.png

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

    解决方法:

    ef130cba039c953a7c56ba4650edb1e5.png

    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;

    2de8690c3e51e3a849b736518803e1a9.png

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

    5.

    colormap(jet);

    b2700f97d05bdff55eb5af61b628369e.png4c7b9becabf352fffe232f5c79eaed82.png

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

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

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

    展开全文
  • 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

     

     

    展开全文
  • 利用matlab将三维数据画成三维立体图

    万次阅读 多人点赞 2018-08-20 14:13:14
    将数据利用matlab画出,最开始是导入数据,然后处理数据,最后将处理的数据画出来。 所以我将它分为个步骤。 第一步:导入数据 如果是mat数据。可以直接load 如果是txt数据。可以用txtread 如果是excel数据...

    首先先分析对象。将数据利用matlab画出图,最开始是导入数据,然后处理数据,最后将处理的数据画出来。

    所以我将它分为三个步骤。

    第一步:导入数据

    • 如果是mat数据。可以直接load
    • 如果是txt数据。可以用txtread
    • 如果是excel数据。可以用xlsread

    详细的,可以参考https://blog.csdn.net/blueskyjian/article/details/72832449

    代码如下:

    %% 导入数据
    clear all;clc;close all;
    load xyzdata.mat;%导入的的数据应当去除NaN值

    这是我的数据截图:

    注:需要注意的是,要将数据的NaN(空值)去掉。可以在matlab工作去查看,并去除。

    第二步:数据处理

    由于我们的x、y轴数据,并不是1 、 2 、3等这样的整数排列的,所以必须利用原有的数据,重新构造三维数据。

    重构三维数据主要有两步:

    • 第一步:栅格化,用到meshgrid()函数
    • 第二步:插值,用到griddata()函数

    栅格化原理、效果可以参考https://blog.csdn.net/shanchuan2012/article/details/72772191

    简单来时就是绘制网格

    插值原理、效果可以参考https://blog.csdn.net/pingmin2014/article/details/47298947

    简单来说就是估计绘制网格格点的z的数据

    代码如下:

    %% 相关计算
    [a,~]=size(xRow);%x轴数据总共*******行;
    xmax=max(xRow);%x轴数据最大值为********
    xmin=min(xRow);%x轴数据最小值为*********
    %下面两行是测试用的,便于设置间隔值
    %delta_x=xmax-xmin;%x轴范围宽度值为*****
    %delta_x/a;%z轴间隔大约为1.4796e-04,可以设置为0.01,如果想要更为精确,可以设置为0.001、0.0001
    [b,~]=size(yCol);%y轴数据为********
    ymax=max(yCol);%y轴数据最大值为********
    ymin=min(yCol);%y轴数据最小值为********
    %下面两行是测试用的,便于设置间隔值
    %delta_y=ymax-ymin;%轴范围宽度值为为*********
    %delta_y/b;%y轴间隔大约为9.9876e-05,可以设置为0.01,如果想要根为精确,可以设置为0.001、0.0001

    第三步:画图

    这一步需要注意的是:选好网格间隔,网格间隔越小,精确度越高,相对应的,计算量越大,电脑性能要求越高。

    电脑性能不高的,可以跳大间隔,同时优化代码,清除画图用不了的变量。

    代码如下:

    %% 重构三维数据,画图
    %间隔为 0.05的时候,X Y数据为 *****×****,  电脑一般的,将间隔调大
    %间隔为    1的时候,X Y数据为 ***×****,    电脑  好的,将间隔调小
    [X,Y]=meshgrid(xmin:1:xmax,ymin:1:ymax);%将x、y轴网格化,重构用于画图x、y轴数据
    Z=griddata(xRow,yCol,z,X,Y);%插值,重构用于画图的Z轴数据
    clear a b xmax xmin ymin ymax xRow yCol z;
    mesh(X,Y,Z)

    实验结果:

    由于保密需要吗,图像结果打上马赛克,数据也不能提供。

    完整代码:

    %利用txt excel等大量x y z数据,化三维立体图
    %% 导入数据
    clear all;clc;close all;
    load xyzdata.mat;%导入的的数据应当去除NaN值
    %% 相关计算
    [a,~]=size(xRow);%x轴数据总共********行;
    xmax=max(xRow);%x轴数据最大值为**********
    xmin=min(xRow);%x轴数据最小值为********
    %下面两行是测试用的,便于设置间隔值
    %delta_x=xmax-xmin;%x轴范围宽度值为*****
    %delta_x/a;%z轴间隔大约为1.4796e-04,可以设置为0.01,如果想要更为精确,可以设置为0.001、0.0001
    [b,~]=size(yCol);%y轴数据为******
    ymax=max(yCol);%y轴数据最大值为******
    ymin=min(yCol);%y轴数据最小值为********
    %下面两行是测试用的,便于设置间隔值
    %delta_y=ymax-ymin;%轴范围宽度值为为******
    %delta_y/b;%y轴间隔大约为9.9876e-05,可以设置为0.01,如果想要根为精确,可以设置为0.001、0.0001
    %% 重构三维数据,画图
    %间隔为 0.05的时候,X Y数据为 *****×****,  电脑一般的,将间隔调大
    %间隔为    1的时候,X Y数据为 ***×***,    电脑  好的,将间隔调小
    [X,Y]=meshgrid(xmin:1:xmax,ymin:1:ymax);%将x、y轴网格化,重构用于画图x、y轴数据
    Z=griddata(xRow,yCol,z,X,Y);%插值,重构用于画图的Z轴数据
    clear a b xmax xmin ymin ymax xRow yCol z;
    mesh(X,Y,Z)
    

    给学matlab的人,包括我自己一个勉励:路漫漫其修远兮,吾将上下而求索。

    展开全文
  •  在MATLAB中,二统计分析图形很多,常见的有条形、阶梯、杆和填充等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,…)。   例 分别以条形、...
  • 三维空间作图数学软件 Matlab 本讲主要内容 手工作图 手工作图 Matlab 绘图 二维作图命令 二维作图命令 图形的属性 点和线的基本属性 添加标题 添加坐标轴标注 绘制多个函数图像 添加图例 添加文本 划分绘图窗口 ...
  • 第一次用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
  • 1. 三维立体图的基本要件: 全空间网格化网格节点的物理属性值 2.数据准备 数据不易贴,我放在了百度网盘:点击下载数据 大概如下形式: TIP: 这里的数据矩阵为v(5276),可以看成一本27
  • 介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,...
  • 三维图形的绘制除了常用的网格、表面和等高线等方法外,Matlab还提供了一些立体可视化函数用于绘制更为复杂的立体和向量对象。...所谓标量图形,就是由一个数学表达式所确定的三维立体图形,比如...
  • 三维立体图如下:A'------------B'/| /|/ | / |D'------------C' || | | || | | || A----------|--B| / | /|/ |/D-------------C表面展开如下:A'----------B'|...
  • 1. 三维立体图的基本要件: 全空间网格化网格节点的物理属性值 2.数据准备 数据不易贴,我放在了百度网盘:点击下载数据 大概如下形式: TIP: 这里的数据矩阵为v(5276),可以看成一本27
  • Matlab三维绘图

    2013-06-25 16:05:00
    三维绘图 1 三维绘图指令 类 别 指 令 说 明 网状 mesh, ezmesh 绘制立体网状 meshc, ezmeshc 绘制带有等高线的网状 meshz 绘制带有...
  • 1) 做出该花瓶三维立体图; 2) 计算其表面积;  计算其体积。  第一次参加数学建模,从来没有接触过Matlab语言,一上来就碰到这种数字图像处理的问题就懵了。完全是一边摸索,一边自学Matlab语言,一遍又一遍...
  • 3.在三维图形中标记出来。贴图和源代码:中的红五角星就是找到的最大值(这里有两处,该方法有几个就能找到几个,不受1的限制)。源代码(Matlab):clc;clear all;close all;x = -3:0.1:3;y = ...
  • 一、基本XYZ 立体绘图命令(画出函数22y xxe z --=形成的立体网状为例)1、mesh 和plot 是三度空间立体绘图的基本命令,mesh 可画出三维网线,plot 则可画出立体曲面,两者产生的图形都会依高度而有不同颜色。...
  • 2 基本XYZ立体绘图命令mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状,plot则可画出立体曲面,两者产生的图形都会依高度而有不同颜色。下列命令可画出由函数形成的立体网状: x=linspace(-2, 2,...
  • 三维绘图函数 三维绘制工具 函数view 实例:三维螺旋线 >> t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) grid %添加网格 plot3可以画出空间中的曲线 >> t=linspace(0,20*...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 185
精华内容 74
关键字:

matlab三维立体图

matlab 订阅