我知道数据点及其值,描述为数组,speedpower

speed = [2, 6, 8, 10, 12]
power = [200, 450, 500, 645, 820],

我想估算与未在源数组(2到12)中列出的速度值(例如7)相对应的功率值。

即我正在寻找一种执行插值的方法

最佳答案

最简单的方法是将功率对速度的依赖关系视为一条线的集合,并假设目标点位于某条线的两个已知点之间,然后计算该值。

javascript - 如何按已知点数组对某些数据点的值进行插值?-LMLPHP

例如。您可以执行以下操作:

const speed = [2, 6, 8, 10, 12], power = [200, 450, 500, 645, 820]

const interpolate = (xarr, yarr, xpoint) => {
	const	xa = [...xarr].reverse().find(x => x<=xpoint),
			xb = xarr.find(x => x>= xpoint),
			ya = yarr[xarr.indexOf(xa)],
			yb =yarr[xarr.indexOf(xb)]
	return yarr[xarr.indexOf(xpoint)] || ya+(xpoint-xa)*(yb-ya)/(xb-xa)
}

console.log(interpolate(speed,power,7))
.as-console-wrapper{min-height:100%}

09-25 16:07