最近做了一个项目涉及到插值算法,有源数据和插值后的数据,但不知道使用的具体是什么插值算法,尝试了5,6种不同的算法,但均和目标数据不匹配。后决定试试Excel里面的线性插值,一对比数据,结果发现使用的就是这个算法。
其中做excel实验的方法是模仿的这个网址:
http://forums.codeguru.com/showthread.php?461020-Forecast-function
里面提供了公式是:FORECAST(E19,OFFSET($C$4,MATCH(E19,$B$4:$B$12,1)-1,0,2),OFFSET($B$4,MATCH(E19,$B$4:$B$12,1)-1,0,2))
问题原型:在一组源数据中(x[ ],y[ ]),待插值的对象是key,求的插值后的y值。
上面公式大体意思是:找到小于并最接近key的x的index,得到两个匹配的数组 x_map[] = {x,x[index+1]}, y_map[] = {y,y[index+1]},因此上面公式变成了
forecast(key,y_map[], x_map[]);
下面贴出实现的代码
public class ExcelInterAlgorithm
{
public static double Compute(double[] x_Values, double[] y_Values, double key)
{
int index = binarySearch(x_Values,key);
if (index == -1)