1

我正在使用interp1MATLAB 中的函数在信号中插入一些丢失的数据,它就像一个魅力。但是,我想知道该功能是如何工作的。

我检查了函数的代码interp1,它使用了这个函数spline。该函数的代码spline对我来说非常难以理解,所以我用谷歌搜索并在维基百科上搜索过它,并且我(通常)知道它是如何工作的,具有自由度,以及该函数如何使用多项式(通常是三阶)来生成曲线的缺失部分。

如果我有一个包含 20 个数字的数组,并且 8 - 12 将丢失(零):

4 5 2 3 5 4 3 0 0 0 0 0 4 5 2 4 3 5 4 3

该函数如何确定哪些数字适合其中?它是在数据上移动的特定宽度的窗口,如处理 [1-5]、[2-6]、[3-7] 等?还是它使用缺失数据左右的 2 或 3 个数字?

我不是在寻找数学解释,我只是想知道它是如何发挥作用的 :)

4

1 回答 1

2

我仍然不知道这是否会回答您的问题,但我会尝试看看。

我会尽量做到清晰易懂,所以为了简单起见,我可能会故意留下一些(可能很重要的)细节。

有时人们在不知道其解析表达式的情况下知道函数在一组点的值。知道函数在不在集合中的点的值的任务称为插值/外插。插值的基本原理是根据函数在最近邻点的值计算函数在所需点的值。

您能想到的最简单的方法是线性插值。您的未知函数在给定点的值是最近相邻值的距离加权平均值。这仅仅意味着,如果兴趣点位于点 A 的距离 1 处,距离点 B 的距离为 9,则该点的函数值将是 10 % B 和 90 % A。这相当于在每个点之间绘制直线你知道函数的值的地方。

这种方法的问题是它会产生函数的不连续估计。这在对描述自然现象的函数建模时很烦人,因为这些函数通常是连续的。

在其他插值方法中,三次样条插值可以解决这个问题。原理保持不变,除了在每个点之间没有一条线,您有一个三阶多项式。多项式的一些约束使其独一无二:即它的一阶和二阶导数必须与相邻多项式连续。这保证了插值函数的“平滑度”。

所以对我来说,三次样条插值的“魔力”来自“平滑度”的假设,它允许这种方法正确地插值描述自然现象的函数。

如果这个答案没有用或过于简单,我将删除它。

于 2011-10-27T15:28:51.680 回答