【问题标题】:3D Oceanic Temperature Interpolations in MATLABMATLAB 中的 3D 海洋温度插值
【发布时间】: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


【解决方案1】:

我假设原始的X,Y,Z,C 数据点是匹配的,您可以使用命令mesh(X,Y,Z,C) 来获得可用的绘图。现在您正在寻求做同样的事情,但使用的是插值数据集。

在这种情况下,您只需给mesh 命令提供颜色数据C

C 也需要插值,所以可能是这样的:

Ci = griddata(X,Y,C,Xi,Yi); % Interpolate C the same way you did for Z
mesh(Xi,Yi,-Zi,Ci)

编辑: 为之前的错误答案道歉。

【讨论】:

  • 谢谢!在与 Z 相同的矩阵中添加温度数据,然后对其进行网格划分对我来说效果很好!你知道是否有办法平滑插值,使其不那么锯齿状?我将使用更新后的数字编辑我的原始帖子,以便您明白我的意思。非常感谢!
  • 函数griddata 提供了几种不同的插值方法docs。使用的默认方法是线性插值,因此是锯齿状特征;其他可能给出“更平滑”结果的方法是自然邻居griddata(...,'natural') 和三次插值griddata(...,'cubic')。您必须决定这些是否适用于您的用例。除此之外,您还必须考虑其他选项,例如取插值数据集的平均值等。
  • 有没有办法插入到定义的多维数据集?而不是在 griddata 函数中使用平滑因子?
  • 不幸的是,我不知道任何允许您使用自定义插值方法的 MATLAB 函数。这是 MathWorks 提供的插值方法的 full documentation page。最接近我认为您想要的的是函数mkpp,它允许您创建任意次数的分段多项式函数。尽管您必须弄清楚如何从中制作插值函数。
【解决方案2】:

很难确切知道“不起作用”是什么意思,或者温度矩阵 C 的性质是什么,但 C 的规范如下:

  • 与 Z 大小相同(更具体地说,Z 中的每个元素对应于 C 中相同位置的每个元素)
  • C 中的每个元素都是一个整数,对应于 当前 颜色图中的一个位置。 (这意味着如果您更新颜色图,您的曲面图将相应更新)
  • 可以在绘图后通过曲面图的cdata 属性检查/更改整数。
  • 您可能必须更改绘图将颜色图视为缩放还是直接(即 cdatamapping)。查看对象的属性以找出答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多