代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

反距离加权插值

  •  1
  • Tim unnamed eng  · 技术社区  · 15 年前

    我想计算一个重量,作为距离的倒数,比如 inverse distance weighting interpolation .

    double wgt = 0, wgt_tmp, result = 0;
    for (int i = 0; i < num; i++) {
       wgt_tmp = 1.0/dist[i];
       wgt += wgt_tmp;
       result += wgt_tmp * values[i];
    }
    results /= wgt;
    

    但是距离可以是 0 我需要使重量适合计算。如果只有一段距离 dist[i] ,我想要它的对应值 values[i] 成为 显性的 . 如果有几个距离 ,我想让他们的价值观 同等贡献 结果呢。也即使 DIST〔I〕 不是零而是很小,我想有一个合理的标准来检查和处理它。知道如何实施吗?

    3 回复  |  直到 12 年前
        1
  •  4
  •   Cascabel    15 年前

    除了分段,我看不出其他的方法,你需要一个不同的函数,而不是小距离的倒数距离。最简单的办法就是把上面的砍下来:

    modified_dist[i] = dist[i] < MIN_DIST ? MIN_DIST : dist[i]
    

    但如果你想的话,你可以用一些还在减少的东西来代替,比如 (MIN_DIST + dist[i])/2 .

        2
  •  4
  •   Tebas    14 年前

    如果有一个零距离,没有必要插值,因为你有一个完美的匹配!

    在for循环中:

    if(dist[i] == 0.) return values[i];
    
        3
  •  3
  •   Daniel Daranas    15 年前

    提出“支配”、“非常小”和“处理它”的定义。然后,把它们翻译成代码。

    推荐文章