【发布时间】:2020-07-23 18:06:56
【问题描述】:
我正在运行自主水下航行器任务,这些任务为我提供了尝试创建 3D 插值的纬度、经度、深度和温度数据。我能够创建环境的 3D 模型,但我试图将颜色填充为每个相关位置的插值温度。
下图是我得到的 3d 深度图表,我希望填充颜色为这些位置的温度:
我尝试使用颜色图,其中 surf(X, Y, Z, C) 和 C 是温度数据,但这不起作用。
这就是我的代码,其中 VPSA 是我的数据集,X = 经度,y = 纬度,Z = 深度,C = 温度
%Making Variables:
X = VPSA {:,1};
Y = VPSA {:,2};
Z = VPSA {:,3};
C = VPSA {:,4};
%Three axis plot
%Plotting Variable with coordinates
xi = linspace(min(X),max(X),1000);
yi = linspace(min(Y),max(Y),1000);
[Xi,Yi] = meshgrid(xi,yi);
Zi = griddata(X,Y,Z, Xi,Yi);
mesh (Xi,Yi,-Zi)
xlabel('Latitude')
ylabel('Longitude')
zlabel('Depth')
更新:我添加了以下代码行
Ci = griddata(X,Y,C,Xi,Yi);
mesh(Xi,Yi,-Zi,Ci)
要得到下图,但很难说出发生了什么,我想知道是否有一种方法可以将插值平滑到一个盒子中,这样它就不会像锯齿一样。
谢谢!!
【问题讨论】:
-
表面不是在 3D 中表示标量的好载体。一个表面可以代表你的温度等值。对于完整卷(3D 域),您可能需要阅读:Volume Visualization。
-
@Hoki 感谢您的建议!我认为您是正确的,因为这不是可视化这些数据的最佳方式。
标签: matlab interpolation temperature ocean