matlab根据数据画三维图 您所在的位置:网站首页 matlab怎么画杆图 matlab根据数据画三维图

matlab根据数据画三维图

2023-12-06 16:44| 来源: 网络整理| 查看: 265

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。 Jetbrains全系列IDE稳定放心使用

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

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

第一步:导入数据如果是mat数据。可以直接load如果是txt数据。可以用txtread如果是excel数据。可以用xlsread

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

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

这是我的数据截图:

matlab根据数据画三维图_matlab导入三组数据画三维图matlab根据数据画三维图_matlab导入三组数据画三维图

注:需要注意的是,要将数据的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)实验结果:matlab根据数据画三维图_matlab导入三组数据画三维图matlab根据数据画三维图_matlab导入三组数据画三维图

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

完整代码:%利用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的人,包括我自己一个勉励:路漫漫其修远兮,吾将上下而求索。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183176.html原文链接:https://javaforall.cn



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有