首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有人能描述一种比双线性插值更好的二维插值方法吗?

有人能描述一种比双线性插值更好的二维插值方法吗?
EN

Stack Overflow用户
提问于 2014-11-21 22:58:07
回答 1查看 2.3K关注 0票数 3

我有一个数据点的网格,目前我使用双线性插值来查找网格中的缺失点。我被指向了Kriging的方向,也就是最好的线性无偏估计器,但我找不到好的源代码或代数解释。有没有人知道我可以使用的其他插值方法?

--更新@Sam Greenhalgh我考虑过双三次插值,但我使用我找到的代码示例得到的结果似乎不太对劲。

下面是Bicubic的代码示例

注意,我是用C#编写代码的,但我也欢迎来自其他语言的示例。

代码语言:javascript
复制
    //array 4
    double cubicInterpolate(double[] p, double x)
    {
        return p[1] + 0.5 * x * (p[2] - p[0] + x * (2.0 * p[0] - 5.0 * p[1] + 4.0 * p[2] - p[3] + x * (3.0 * (p[1] - p[2]) + p[3] - p[0])));
    }
    //array 4 4
   public double bicubicInterpolate(double[][] p, double x, double y)
    {
        double[] arr = new double[4];
        arr[0] = cubicInterpolate(p[0], y);
        arr[1] = cubicInterpolate(p[1], y);
        arr[2] = cubicInterpolate(p[2], y);
        arr[3] = cubicInterpolate(p[3], y);
        return cubicInterpolate(arr, x);
    }

double[][] p = {
                new double[4]{2.728562594,2.30599759,1.907579158,1.739559264},
                new double[4]{3.254756633,2.760758022,2.210417411,1.979012766},
                new double[4]{4.075740069,3.366434527,2.816093916,2.481060234},
                new double[4]{5.430966401,4.896723504,4.219613391,4.004306461}
               };

Console.WriteLine(CI.bicubicInterpolate(p, 2, 2));
EN

回答 1

Stack Overflow用户

发布于 2018-08-24 03:48:37

如果你的数据点在一个规则的网格上,我建议你使用二维的分段线性样条。您可以先填充行的数据(x值),然后再填充列的数据(y值)。

Math.NET Numerics具有您需要的分段线性样条函数:

代码语言:javascript
复制
MathNet.Numerics.Interpolation.LinearSpline.InterpolateSorted
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27064183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档