matlab 4D插值图
matlab 4D interpolation plot
这是一个示例数据集。
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(时间 vs sci_temp)剖面图。就像这张图。
如何在 3D 绘图中显示 sci_temp 上的轨迹?
有没有人可以帮助我?
谢谢
首先,你做的插值有点错误,你不想在由
创建的网格上插值
meshgrid(time,z);
因为它会重复值。您想要在
创建的网格上进行插值
meshgrid(time,linspace(min(z),max(z),50));
一旦你得到像这样的插值:
您可以使用 surface
函数在 3D space 中绘制它们,您只需要确保适当地给出 x 和 y 坐标
surface(repmat(x,50,1),repmat(y,50,1),zmesh,tzmesh)
您甚至可以有更复杂的路径,例如,相同的数据但 y=z
编辑:另外我忘了说,我建议您使用 scatteredInterpolant
而不是 TriScatteredInterp
。它使您可以更好地控制插值
这是一个示例数据集。
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(时间 vs sci_temp)剖面图。就像这张图。
如何在 3D 绘图中显示 sci_temp 上的轨迹?
有没有人可以帮助我?
谢谢
首先,你做的插值有点错误,你不想在由
创建的网格上插值meshgrid(time,z);
因为它会重复值。您想要在
创建的网格上进行插值meshgrid(time,linspace(min(z),max(z),50));
一旦你得到像这样的插值:
surface
函数在 3D space 中绘制它们,您只需要确保适当地给出 x 和 y 坐标
surface(repmat(x,50,1),repmat(y,50,1),zmesh,tzmesh)
您甚至可以有更复杂的路径,例如,相同的数据但 y=z
编辑:另外我忘了说,我建议您使用 scatteredInterpolant
而不是 TriScatteredInterp
。它使您可以更好地控制插值