之前:
id year value
SE 1950 67
SE 1960 71
SE 1965 82
NO 1975 65
NO 1985 75
后:
data : {
SE : {
data : {
1950 : 67,
1951 : 67.4,
1952 : 67.8,
[...]
1965 : 82
},
min_year : 1950,
max_year : 1965
}
NO : {
data : {
[...]
},
[...]
}
}
基本上,基于JS中相邻值填充间隙/插值的最有效方法是什么?
答案 0 :(得分:0)
如果你只是想要直线插值,那么给定n_0
和n_1
作为你做的指数知道值:
val[n] = val[n_0] + (n - n_0) * (val[n_1] - val[n_0]) / (n_1 - n_0);
例如,给定SE的数据,1960年的插值将为:
67.8 + (1960 - 1952) * (82 - 67.8) / (1965 - 1952)
即。关于76.5
答案 1 :(得分:0)
JS作为一种语言没有工具可以直接帮助你。
您可以非常轻松地实现线性或多项式插值。多项式(等级为3)可能会在中间提供稍微好一点的数字,尽管端点可能有问题 - 取决于数据。
线性插值更容易,但总的来说,我认为它不会像高阶多项式插值那样给出准确的估计。
替代方案可能是样条(立方体相对容易),这对于您的目的而言将足够准确。它可能是轻微的矫枉过正,虽然可能不是 - 不确定这个要求的范围。
您可能会考虑使用此服务器端,并将其中一个库用于实现这些插值函数的其他语言。这将为您提供一种非常准确和通用的方法来有效地解决问题,而无需自己实现。
很难说,因为准确程度,数据范围和项目范围都会影响你需要什么类型的插值,如果它可以在服务器/客户端完成等等。