matlab中不规则空间三维矩阵的插值
我有一个时间序列的温度分布,我想插值,我想问一下,如果我的数据是不规则间隔的,怎么做 以下是矩阵的细节:matlab中不规则空间三维矩阵的插值,matlab,grid,2d,interpolation,Matlab,Grid,2d,Interpolation,我有一个时间序列的温度分布,我想插值,我想问一下,如果我的数据是不规则间隔的,怎么做 以下是矩阵的细节: 温度是30x365 时间是1x365 深度为30x1 时间和深度的间隔都是不规则的。我想问一下如何将它们插值到规则网格中 我已经研究了Matlab中的interp2和TriScatteredInterp,但是问题如下: interp2仅当数据位于常规网格中时才起作用 TriscatteredInterp仅当向量是列向量时才起作用。虽然时间和深度都是列向量,但温度不是 谢谢。我将使用您的数
- 温度是30x365
- 时间是1x365
- 深度为30x1
interp2
和TriScatteredInterp
,但是问题如下:
interp2
仅当数据位于常规网格中时才起作用TriscatteredInterp
仅当向量是列向量时才起作用。虽然时间和深度都是列向量,但温度不是李>
谢谢。我将使用您的数据拟合样条曲线或多项式,然后定期重新采样。我强烈推荐这个功能。事实上,这个叫约翰·德里科的家伙所做的一切都是难以置信的。除此之外,我在过去使用过这个函数,当我有一个不规则间隔的3D问题的数据时,它工作得相当好。如果你的数据集有很好的支持,我怀疑它有,这将是小菜一碟。享受吧!希望这有帮助 函数
Interp2
根本不需要规则间隔的测量网格,它只需要一个单调的网格。也就是说,存储在向量深度
和次数
中的采样位置必须增加(或减少),仅此而已
假设情况确实如此*并且您希望在向量rdepths
和rtimes
中存储的常规位置**进行插值,则可以执行以下操作:
[JT, JD] = meshgrid(times, depths); %% The irregular measurement grid
[RT, RD] = meshgrid(rtimes, rdepths); %% The regular interpolation grid
TemperaturesOnRegularGrid = interp2(JT, JD, TemperaturesOnIrregularGrid, RT, RD);
*:如果没有,您可以对行和列进行排序,以返回单调网格。
**:事实上,
Interp2
对输出网格没有任何限制(它可以是不规则的,甚至是非单调的)。请在John D'Errico的MATLAB central上试用该工具。要使用它,请传入两个独立的数据向量(时间和温度)、相关数据矩阵(深度)以及要使用的规则间隔的X&Y数据点。默认情况下,该工具还对重叠(或接近重叠)的数据点进行平滑处理。如果不需要,您可以通过广泛的配置选项覆盖此选项(和其他选项)。示例代码:
%Establish regularly spaced points
num_points = 20;
time_pts = linspace(min(time),max(time),num_points);
depth_pts = linspace(min(depth),max(depth),num_points);
%Run interpolation (with smoothing)
Pest = gridfit(depth, time, temp, time_pts, depth_pts);
您可以简单地遍历每一行温度(
temperature(i,:)
),以避开大小问题。然而,这个问题还不清楚。你到底想做什么?什么样的插值?线性的,多项式的,什么花哨的?你能不能像往常一样适应并从那里开始?