精华内容
下载资源
问答
  • 利用matlab将三维数据画成三维立体图发布时间:2018-08-20 14:13,浏览次数:1367, 标签:matlab首先先分析对象。将数据利用matlab画出图,最开始是导入数据,然后处理数据,最后将处理的数据画出来。所以我将它分为...

    利用matlab将三维数据画成三维立体图

    发布时间:2018-08-20 14:13,

    浏览次数:1367

    , 标签:

    matlab

    首先先分析对象。将数据利用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三维立体图

    千次阅读 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绘制三维立体图

    千次阅读 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

     

     

    展开全文
  • 用于优化函数的测试,相关的测试函数,包括几种传统的Ackley函数,Griewank函数,Rastrigin函数,Rosenbrock函数,Schaffer函数和Sphere函数。
  • 1. 三维立体图的基本要件:全空间网格化网格节点的物理属性值2.数据准备数据不易贴,我放在了百度网盘:点击下载数据,网盘失效了,有要的,我邮件给你发大概如下形式:![这里写图片描述]...

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

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

    全空间网格化

    网格节点的物理属性值

    2.数据准备

    数据不易贴,我放在了百度网盘:点击下载数据,网盘失效了,有要的,我邮件给你发

    大概如下形式:

    ![这里写图片描述](https://img-blog.csdn.net/20161216231845088?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3dlbmJvMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

    TIP:

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

    3.主要函数:slice、isosurface、patch

    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

    效果图:

    ![这里写图片描述](https://img-blog.csdn.net/20161217000748658?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3dlbmJvMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

    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

    效果图:

    ![这里写图片描述](https://img-blog.csdn.net/20161217001102383?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3dlbmJvMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

    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下不同的效果图:

    27a86683214b69effd2ecf78eed1b552.png

    2edc9667a88cf1110b7c055e066014a3.png

    538d92675fa756c68084b52cddfa1be0.png

    Matlab绘制三维曲面(以二维高斯函数为例)

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

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

    2011-11-19 10:31:41
    matlab图形心形的绘制三维的哦,希望对大家有帮助。。。
  • 基于matlab三维柱状图绘制

    万次阅读 2015-11-27 15:55:25
    基于matlab三维柱状图绘制 摘要: 对于生物建模、数据统计等,经常会得到三维数据,绘制三维柱状图是显示它们的重要方式。但matlab绘制三维柱状图,可能需要进一步的人工干预才能得到预想的效果。这里...
  • 1 基本命令plot3(x,y,z,'s') %绘制三维曲线plot3(x1,y1,z1,'s1',x2,y2,z2,'s2',...) %绘制多条三维曲线说明:当xyz为同维向量时,则绘制以xyz元素...2 绘制三维网线图和曲面三维网线和曲面三维立体图形,mat...
  • matlab开发-三维立体图

    2019-08-24 08:05:51
    matlab开发-三维立体图。使用surf命令在3D中绘制X-Y-Z数据。不需要曲线拟合工具箱。
  • MATLAB 三维图绘制程序

    2020-11-29 10:35:26
    1、三维曲线绘制函数为 plot3(x,y,z): 表示绘制一条三维曲线,其中x,y,z为三个相同维数的向量,函数绘出这些向量的所表示点的曲线 2、plot3(x1,y1,z1,c1,x2,y2,z2,c2): 表示按照坐标对向量绘制多条曲线,其中x1,y1,...
  • 三维绘图函数三维绘制工具函数view实例:三维螺旋线>> t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)grid %添加网格plot3可以画出空间中的曲线>> t=linspace(0,20*pi, 501);plot3(t.*sin(t), t.*cos(t), t); ...
  • MATLAB三维图形绘制

    2016-01-08 15:33:45
    MATLAB绘制三维图的程序 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。...
  • 1. 三维立体图的基本要件: 全空间网格化网格节点的物理属性值 2.数据准备 数据不易贴,我放在了百度网盘:点击下载数据 大概如下形式: TIP: 这里的数据矩阵为v(5276),可以看成一本27
  • matlab三维图形绘制.ppt

    2020-11-22 00:12:28
    4.2 MATLAB三维图形绘制;二绘制三维网格和曲面;2. 三维网格;3. 三维曲面 ;三绘制三维旋转体;四立体图形与图轴的控制;默认值az=-37.5el=30;五色彩的控制;2色图的显示和处理(2) 浓淡处理shading;4.3 MATLAB...
  • 1. 三维立体图的基本要件: 全空间网格化网格节点的物理属性值 2.数据准备 数据不易贴,我放在了百度网盘:点击下载数据 大概如下形式: TIP: 这里的数据矩阵为v(5276),可以看成一本27
  • MATLAB三维图形绘制、渲染和交互

    千次阅读 2019-11-21 09:39:22
    介绍MATLAB三维图形的建模、着色、光照、材质、透明性和交互操作全部内容。 【课程收益】 MATLAB三维绘图 MATLAB三维图形渲染和交互操作 视频教程入口 第一章:课程简介 1. 课程简介 4:07 第二章:三维...
  • matlab绘制三维图

    万次阅读 多人点赞 2018-08-22 20:31:57
    matlab绘制三维图 1.1绘制三维图命令 plot3(x,y,z,’s’); plot3(x,y,z,’s’,x1,y1,z1,’s1’….); % 绘制多条三维图 s指定线形,色彩,数据点形状的字符串 x = 0:0.1:20*pi; plot3(x,sin(x),cos(x))...
  • MATLAB三维绘图(四)绘制特殊的三维

    千次阅读 2020-03-09 11:59:28
    MATLAB三维绘图(四)绘制特殊的三维 1、使用pie3绘制三维饼状,示例: %% 绘制三维饼图 clear all; x=[0.2 0.1 0.25 0.15 0.16]; y=[3 5.5 7 10.5 8.5]; figure; subplot(121); pie3(x) %绘制三维饼图 ...
  • matlab绘制三维图实例

    2012-03-03 15:16:32
    十几个matlab绘制三维图的实例,详细的代码以及注解,含有运行以后的figure,图像
  • MATLAB 绘制三维柱状

    2013-04-10 12:19:06
    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
  • MATLAB三维图形上绘制标记点

    万次阅读 多人点赞 2019-02-25 18:44:41
    在实际应用绘制图形时,需要在三维模型上标记出来某些点,甚至还要绘制这些点之间的对应关系(使用直线连接),现将几种不同的绘制方法总结如下。 二、标记点 1、标记扁平点 % x,y,z是要标记的点的坐标 % r.表示颜色...
  • 13 MATLAB 三维图形绘制

    千次阅读 多人点赞 2016-12-26 11:53:36
    在实际工程应用中,常常遇到三维甚至更多维的数据,需要在图形中表示出来,MATLAB中提供了相应的三维图形 绘制功能,这些绘制功能与二维图形的绘制十分类似,特别是曲线的属性,例如线型、颜色等的设置,是完全相同...
  •  在MATLAB中,二统计分析图形很多,常见的有条形、阶梯、杆和填充等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,…)。   例 分别以条形、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,234
精华内容 493
关键字:

matlab三维立体图绘制

matlab 订阅