当计算任何时刻的值时,我们期望红色和蓝色数据集都将返回类似的值。然而,正如三个较小的框所示,事实并非如此。随着时间的推移,每个数据集(红色和蓝色)的值将会分散然后重新汇聚到原始值周围。
最初我使用线性插值来获取值,接下来我尝试使用Catmull-Rom插值。前者导致值在每个数据点之间趋于接近然后漂离;后者导致值保持更近,但平均误差更大。
是否有人能够提出另一种策略或插值方法,能够提供更大的平滑度(也许通过使用更多来自每个数据集的采样点)?
我认为您所问的问题没有一个直接的答案,需要更多了解样本过程的基础知识。由于其本质,样本之间的函数值可以是任何内容,因此我认为没有办法保证两个样本数组的插值收敛。
话虽如此,如果您事先了解底层过程,那么您可以选择几种插值方法来最小化误差。例如,如果您以机翼速度为函数测量阻力力,则知道其关系是平方(a*V^2)。然后,您可以选择二次多项式拟合,在两个序列的插值之间有相当好的匹配程度。
我想引用Catmull-Rom样条曲线介绍来建议不要在这个插值任务中使用Catmull-Rom。
Catmull-Rom样条曲线的一个特点是指定曲线将通过所有控制点,而并非所有类型的样条曲线都具备此特性。
根据定义,您的红色插值曲线将经过所有红色数据点,蓝色插值曲线将经过所有蓝色数据点。因此,您无法获得两个数据集的最佳拟合。
您可以改变边界条件,并使用两个数据集中的数据点进行分段逼近,如这些幻灯片所示。
我同意ysap的观点,认为这个问题不能像你期望的那样回答。根据模型动态性质,可能有更好的插值方法 - 正如ysap所说,如果已知底层动态性质,则建议使用这些方法。
关于红色/蓝色样本,我认为您对采样和插值数据集做出了很好的观察,并且我要挑战您最初的期望:
在计算任何时间的值时,我们希望红色和蓝色数据集返回类似的值。
我不指望这样。如果您假设您无法完美地进行插值 - 特别是如果插值误差与样本误差相比较大 - 那么您肯定会有一个连续的误差函数,该函数在离样本点最远(时间)的地方表现出最大的误差。因此,具有不同采样点的两个数据集应该表现出您所看到的行为,因为距离红色采样点较远(时间上),可能接近蓝色采样点(时间上),反之亦然 - 如果像您的点一样错开,这肯定是真实的。因此,我期望您所展示的情况:
随着时间的推移,每个数据集(红色和蓝色)的值将呈现出分歧,然后收敛于原始值。
(如果您没有关于底层动态的信息(除了频率内容),那么Giacomo在采样方面的观点是关键的 - 但是,如果查看低于奈奎斯特的信息,则无需插值。)
Bspline(t) = (data(t-1) + 4*data(t) + data(t+1)) / 6
在对原始连续函数进行采样时,采样频率应符合Nyquist-Shannon采样定理,否则采样过程会引入误差(也称为混叠)。由于两个数据集中的误差不同,因此插值时会得到不同的值。
因此,您需要知道原始函数的最高频率B,然后以至少2B的频率收集样本。如果您的函数具有非常高的频率,并且无法快速采样,则应尝试在采样之前将它们滤除。