给定n个浮点数组,我想创建一个长度为m的新数组(其中n大于m),这样当在线图上绘制时,这两个图将重叠。
例如,给定以下数组和新长度8:
[0, 2, 4, 6, 8, 10, 12, 14, 14, 12, 10, 8, 6, 4, 2, 0]
结果可能是这样的:
[1.8, 5.6, 9.4, 13.8, 13.8, 9.4, 5.6, 1.8]
(我道歉,我的数学非常糟糕所以数字可能不对)
数学准确性不如速度或记忆考虑重要。
答案 0 :(得分:0)
代替更好的解决方案,这是ruby中数学上不准确的实现:
def interpolate(series, new_size)
raise "new_size must be smaller than series size" if series.count < new_size
ratio = (new_size / series.count.to_f).round
res = []
new_size.times do |i|
idx = (i * ratio).round
res << (((ratio * (series[idx] || 0)) + ((1 - ratio) * (series[idx + 1] || 0)) / 2))
end
res
end