我希望计算一个权重,以距离的倒数为基础,类似于反距离加权插值。
然而距离可以是
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]
为0
,我希望它对应的值values[i]
成为主导。如果有几个距离为0
,我希望它们的值平等贡献于结果。即使dist[i]
不为零但非常小,我也希望有一个合理的标准来检查它并处理它。有什么想法如何实现它?
MIN_DIST
提供了很多灵活性,线性映射可以调整 - 一般形式为(dist[i] - MIN_DIST) * k + MIN_DIST
,其中k < 1
,但不要太小以至于dist[i] = 0
映射到一个太小以至于无法除的值... - Cascabel1/distance
的所有后续操作中留有余地。最好还要了解上下文,大多数情况下,你可以对距离有一个相当好的想法,这样距离太小就无关紧要了。例如,当你处理汽车时用厘米足矣,何必使用皮米截止呢? - Cascabel