【问题标题】:How to interpolate and extrapolate non-monotonic vector data set in Matlab如何在 Matlab 中内插和外推非单调向量数据集
【发布时间】:2018-12-13 10:58:30
【问题描述】:

我有一个地理分布的数据集,其中包含 X 坐标、Y 坐标和相应的感兴趣目标值 D。也就是说,我的数据集由三个向量组成:X、Y、D

现在我想做的是在感兴趣的坐标网格上内插和外推目标变量 D。 Matlab 中的griddata-函数似乎能够帮助我解决这个问题,但它只对我的数据集确定的凸包进行插值。

我想做的是将数据 D 外推到任何感兴趣的直角坐标网格,如下所示:

我曾尝试使用 interp2griddedInterpolant 之类的函数,但这些函数似乎要求我将已知数据提供为单调矩阵(使用例如 meshgrid)。也就是说,如果我理解正确,我必须提供 X,Y,D 作为二维网格。但它们不是网格,它们是非单调向量。

那么我该如何继续呢?

【问题讨论】:

  • griddata 然后interp2griddata 的常规输出上?
  • @AnderBiguri 我会试试的,谢谢 :)
  • @AnderBiguri 不幸的是我无法让它工作。也许是 MWE?

标签: matlab interpolation extrapolation


【解决方案1】:

您可以将griddata 与使用双调和样条插值的选项'v4' 一起使用。

与其他方法不同,此插值不是基于三角剖分。

其他选项是使用scatteredInterpolant。您可以选择使用任何'linear''nearest' 方法进行推断

【讨论】:

  • 非常感谢!我会尝试:)
【解决方案2】:

我发现了一种使用scatteredInterpolant的方法:

xy = -2.5 + 5*gallery('uniformdata',[200 2],0);
x = xy(:,1);
y = xy(:,2);
v = x.*exp(-x.^2-y.^2);
F1 = scatteredInterpolant(x,y,v, 'natural');
[xq,yq] = ndgrid(-5:.1:5) % Make the grid
vq1 = F1(xq,yq); % Evaluate function values at grid of interest
surf(xq,yq,vq1)
hold on
plot3(x,y,v, 'ro', 'MarkerFaceColor', 'red')
xlabel('X')
ylabel('Y')
zlabel('V')
title('Interpolation and exrapolation based on scattered data')

问题是,您只能使用三种方法进行推断:'linear'、'nearest'、'natural'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2023-03-14
    相关资源
    最近更新 更多