首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab 4D插补图

matlab 4D插补图
EN

Stack Overflow用户
提问于 2016-08-09 12:23:55
回答 1查看 610关注 0票数 0

这里是一个示例数据集。

代码语言:javascript
复制
x = linspace(10,20,50);
y = linspace(10,20,50);
z = cos(linspace(0,2*pi,50));
time = linspace(1,60,50);
sci_temp = randi(100,50,1);

x,y,z是位置,sci_temp是温度数据。

我想知道如何用sci_temp数据在xyz位置上绘制轨迹。

我尝试插值数据,所以用sci_temp图得到二维插值时间vs。

代码语言:javascript
复制
S = TriScatteredInterp(time',z',sci_temp);
[t_mesh z_mesh] = meshgrid(time,z);
tz_mesh = S(t_mesh, z_mesh);
pcolor(t_mesh,z_mesh,tz_mesh)

我想要得到的是一个2D (时间vs sci_temp)剖面图上的xyz三维图。就像这张照片。

如何在三维图形中显示sci_temp上的轨迹?

有人能帮我吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-09 13:48:15

首先,你做的插值有点错误,你不想在由

代码语言:javascript
复制
meshgrid(time,z);

因为它会复制值。创建的网格上进行插值。

代码语言:javascript
复制
meshgrid(time,linspace(min(z),max(z),50));

一旦得到插值值,如下所示:

您可以用surface函数在3D空间中绘制它们,只需确保适当地给出x和y坐标。

代码语言:javascript
复制
surface(repmat(x,50,1),repmat(y,50,1),zmesh,tzmesh)

您甚至可以有更复杂的路径,例如,相同的数据但是y=z

编辑:另外,我忘了提到,我建议您使用scatteredInterpolant而不是TriScatteredInterp。它让你对插值有更多的控制

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38850665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档