我有一个形成曲线的样本矢量。让我们想象其中有1000点。如果我想拉伸它来填充1500点,那么最简单的算法是什么能给出不错的结果呢?我正在寻找只有几行C / C ++的东西。
我总是想增加矢量的大小,新矢量可以是当前矢量大小的1.1倍到50倍。
谢谢!
答案 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
如果您需要更多数据点,只需在矢量上多次运行。