0

这是一个示例数据集。

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 位置上绘制轨迹。

我尝试插值数据,所以我得到 2D 插值时间 vs z 与 sci_temp 图。

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)

结果

我想要得到的是 xyz 3D 图上的 2D(时间与 sci_temp)剖面图。喜欢这个形象。

结果

如何在 3D 图中显示 sci_temp 上的轨迹?

有没有人可以帮助我?

谢谢

4

1 回答 1

1

首先,您的插值略有错误,您不想在由创建的网格上进行插值

meshgrid(time,z);

因为它会重复值。您想在创建的网格上进行插值

meshgrid(time,linspace(min(z),max(z),50));

一旦你得到插值,比如: 你可以用函数在 3D 空间中绘制它们surface,你只需要确保适当地给出 x 和 y 坐标

surface(repmat(x,50,1),repmat(y,50,1),zmesh,tzmesh)

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


编辑:另外我忘了提,我建议你使用scatteredInterpolant而不是TriScatteredInterp. 它使您可以更好地控制插值

于 2016-08-09T13:48:15.950 回答