拉伸数组

时间:2010-07-21 22:52:15

标签: algorithm interpolation curve-fitting

我有一个形成曲线的样本矢量。让我们想象其中有1000点。如果我想拉伸它来填充1500点,那么最简单的算法是什么能给出不错的结果呢?我正在寻找只有几行C / C ++的东西。

我总是想增加矢量的大小,新矢量可以是当前矢量大小的1.1倍到50倍。

谢谢!

3 个答案:

答案 0 :(得分:6)

答案 1 :(得分:2)

  

什么是最简单的算法才能得到不错的结果?

Catmull-Rom splines。 (如果你想要一条平滑的曲线)

http://www.mvps.org/directx/articles/catmull/
http://en.wikipedia.org/wiki/Cubic_Hermite_spline

对于每个新项目计算旧数组中的小数位置,使用小数部分(f - floor(f))作为插值因子,使用“整数”(即floor(f))部分找到最近的元素。

假设您正在对可以进行数学插值(浮点数)的数据进行操作。如果无法插入数据(字符串),那么唯一的解决方案是使用旧数组的最近可用元素。

如果数组中的点不均匀分布,则需要进行一些调整。

答案 2 :(得分:0)

我能想到的最简单的选项只是一个基于平均值扩展数组的fn,所以:

x,y,z

成为

x,avg(x,y),y,avg(y,z),z

如果您需要更多数据点,只需在矢量上多次运行。