最小化两个数据集之间的插值误差

时间:2010-11-29 18:59:36

标签: math compression interpolation sampling

在下图的顶部,我们可以看到一些值(y轴)随时间变化(x轴)。

当发生这种情况时,我们在不同的和不可预测的时间对值进行采样,我们也在两个数据集之间交替采样,用红色和蓝色表示。

在任何时候计算值时,我们预计红色和蓝色数据集将返回相似的值。然而,如三个较小的盒子所示,情况并非如此。随着时间的推移,每个数据集(红色和蓝色)的值将出现分歧,然后收敛于原始值。

diagrams showing the error in interpolation

最初我使用线性插值来获得一个值,接下来我尝试使用Catmull-Rom插值。前者导致值接近,然后在每个数据点之间漂移;后者导致值保持更接近,但平均误差更大。

任何人都可以提出另一种策略或插值方法,它可以提供更大的平滑度(可能通过使用每个数据集中更多的采样点)?

5 个答案:

答案 0 :(得分:2)

我相信你提出的问题是一个在没有进一步了解基础抽样过程的情况下没有直接答案的问题。就其性质而言,样本之间的函数值可能只是任何,所以我认为没有办法确保两个样本数组的插值收敛。

也就是说,如果您事先了解了基础过程,那么您可以在几种插值方法中进行选择,以最大限度地减少错误。例如,如果您根据机翼速度测量阻力,您就知道该关系是方形(a * V ^ 2)。然后你可以选择二阶多项式拟合,并且两个系列的插值之间有很好的匹配。

答案 1 :(得分:1)

我想引用Introduction to Catmull-Rom Splines建议不要使用Catmull-Rom进行插值任务。

  

Catmull-Rom的一个特点   样条曲线是指定的曲线   将通过所有控制   要点 - 所有类型都不是这样   花键。

根据定义,红色插值曲线将通过所有红色数据点,而蓝色插值曲线将通过所有蓝点。因此,您无法最适合这两种数据集。

您可以更改边界条件并使用两个数据集中的数据点进行分段近似,如slides所示。

答案 2 :(得分:1)

尝试B-splines:Catmull-Rom插值(遍历数据点),B样条曲线平滑。
例如,对于均匀间隔的数据(不是您的情况)

Bspline(t) = (data(t-1) + 4*data(t) + data(t+1)) / 6

当然,插值的红/蓝曲线取决于红/蓝数据点的间距, 所以无法完美匹配。

答案 3 :(得分:1)

我同意ysap这个问题无法回答,正如您所期待的那样。根据您的模型动态,可能有更好的插值方法 - 与ysap一样,我推荐利用基础动力学的方法(如果已知)。

关于红色/蓝色样本,我认为你对采样和插值数据集做了很好的观察,我会质疑你原来的期望:

  

在任何时候计算值时,我们预计红色和蓝色数据集将返回相似的值。

我不指望这个。如果您认为不能完美插值 - 特别是如果插值误差与样本中的误差相比较大 - 那么您肯定会有一个连续误差函数,它表现出距您的采样点最长(时间)最大的误差。因此,具有不同采样点的两个数据集应该显示您看到的行为,因为距红色采样点远(时间)的点可能接近(及时)到蓝色采样点,反之亦然 - 如果您的点是交错的,这肯定是真的。因此,我希望你展示的是:

  

随着时间的推移,每个数据集(红色和蓝色)的值将会出现分歧,然后收敛原始值。

(如果您没有关于基础动态的信息(频率内容除外),那么Giacomo的采样点是关键 - 但是,如果查看奈奎斯特以下的信息,则无需插值。)

答案 4 :(得分:0)

采样原始连续函数时,采样频率应符合Nyquist-Shannon sampling theorem,否则采样过程会引入错误(也称为混叠)。两个数据集中的错误不同,在插值时会产生不同的值。

因此,您需要知道原始函数的最高频率 B ,然后收集频率至少 2B 的样本。如果你的功能具有非常高的频率并且你无法快速采样,那么你至少应该在采样之前尝试过滤它们。