三点插值公式的推导过程

参考原文链接https://blog.csdn.net/m0_54563743/article/details/116096015

第四章 插值法与曲线拟合

4.1、拉格朗日插值法

拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值.

就是给定些“点”,可以找到一个式子,把这些点穿起来

  • 线性插值(两点插值)(两点确定一条直线)

  • (x0 , y0)、(x1 , y1)

    • 用中学学过的直线方程的求解方法把这条直线表示出来。

    • 再将直线方程写为插值基函数×函数值的形式。
      L 1 ( x ) = y 0 x − x 1 x 0 − x 1 + y 1 x − x 0 x 1 − x 0 L_{1}(x) = y_0\frac{x-x_1}{x_0-x_1} + y_1\frac{x-x_0}{x_1-x_0} L1(x)=y0x0x1xx1+y1x1x0xx0

  • 三点插值公式的推导(抛物线插值):待定系数法

    • (x1 , y1),(x2 , y2),(x3 , y3)。这三点不在同一条直线上,则它们可以确定一条抛物线

    • 设抛物线的方程为:
      y = a x 2 + b x + c y = ax^2+bx+c y=ax2+bx+c

    • 将这三个点代入该方程中有:
      { a x 1 2 + b x 1 + c = y 1 a x 2 2 + b x 2 + c = y 2 a x 3 2 + b x 3 + c = y 3 \left\{ \begin{array}{c} ax_1^2+bx_1+c=y_1\\ ax_2^2+bx_2+c=y_2\\ ax_3^2+bx_3+c=y_3 \end{array} \right. ax12+bx1+c=y1ax22+bx2+c=y2ax32+bx3+c=y3

    • 其中x1、x2、x3、y1、y2、y3是已知量,将a,b,c当作未知量。写成矩阵乘法的形式(3×3 × 3×1==>3×1),如下所示:
      [ x 1 2 x 1 1 x 2 2 x 2 1 x 3 2 x 3 1 ] [ a b c ] = [ y 1 y 2 y 3 ] \left[\begin{matrix} x_1^2 & x_1 & 1\\ x_2^2 & x_2 & 1\\ x_3^2 & x_3 & 1\\ \end{matrix}\right]\left[\begin{matrix} a\\ b\\ c\\ \end{matrix}\right]= \left[\begin{matrix} y_1\\ y_2\\ y_3\\ \end{matrix}\right] x12x22x32x1x2x3111 abc = y1y2y3

    • 等式两边同时左乘A的逆后再同时左乘[x2 , x , 1],即可得到该抛物线的方程。

      • 在这里解释一下为什么左乘[x2 , x , 1],因为这样一乘就可以直接得出该抛物线方程的表达式:1×3 × 3×1 ==>式子

      因此该抛物线方程可以写成如下形式,(求逆的时候我用的方法是有伴随除以行列式)
      A − 1 = A ∗ ∣ A ∣ A^{-1} = \frac{A^*}{|A|} A1=AA

      y = [ x 2 x 1 ] ∗ [ x 2 − x 3 − ( x 1 − x 3 ) x 1 − x 2 − ( x 2 2 − x 3 3 ) ( x 1 2 − x 3 2 ) − ( x 1 2 − x 2 2 ) x 2 x 3 ( x 2 − x 3 ) − x 1 x 3 ( x 1 − x 3 ) x 1 x 2 ( x 1 − x 2 ) ] ∗ 1 ∣ A ∣ ∗ [ y 1 y 2 y 3 ] y= \left[\begin{matrix} x^2 & x & 1\\ \end{matrix}\right] * \left[\begin{matrix} x_2-x_3 & -(x_1-x_3) & x_1-x_2\\ -(x_2^2-x_3^3) & (x_1^2-x_3^2) & -(x_1^2-x^2_2)\\ x_2x_3(x_2-x_3) & -x_1x_3(x_1-x_3) & x_1x_2(x_1-x_2)\\ \end{matrix}\right] * \frac{1}{|A|} * \left[\begin{matrix} y_1\\ y_2\\ y_3\\ \end{matrix}\right] y=[x2x1] x2x3(x22x33)x2x3(x2x3)(x1x3)(x12x32)x1x3(x1x3)x1x2(x12x22)x1x2(x1x2) A1 y1y2y3

    • 接下来就是计算这个乘法,首先用左边的行向量乘A*,结果记为L(一行三列的向量)。

    • L = [ x 2 ( x 2 − x 3 ) − x ( x 2 2 − x 3 2 ) + x 2 x 3 ( x 2 − x 3 ) − x 2 ( x 1 − x 3 ) + x ( x 1 2 − x 3 2 ) − x 1 x 3 ( x 1 − x 3 ) x 2 ( x 1 − x 2 ) − x ( x 1 2 − x 2 2 ) + x 1 x 2 ( x 1 − x 2 ) ] L= \left[\begin{matrix} x^2(x_2-x_3)-x(x_2^2-x_3^2)+x_2x_3(x_2-x_3) & -x^2(x_1-x_3)+x(x_1^2-x_3^2)-x_1x_3(x_1-x_3) & x^2(x_1-x_2)-x(x_1^2-x^2_2)+x_1x_2(x_1-x_2)\\ \end{matrix}\right] L=[x2(x2x3)x(x22x32)+x2x3(x2x3)x2(x1x3)+x(x12x32)x1x3(x1x3)x2(x1x2)x(x12x22)+x1x2(x1x2)]

      提取公因子后将L化简为如下对称的形式:
      L = [ ( x 2 − x 3 ) ( x − x 2 ) ( x − x 3 ) ( x 3 − x 1 ) ( x − x 3 ) ( x − x 1 ) ( x 1 − x 2 ) ( x − x 1 ) ( x − x 2 ) ] L= \left[\begin{matrix} (x_2-x_3)(x-x_2)(x-x_3) & (x_3-x_1)(x-x_3)(x-x_1) & (x_1-x_2)(x-x_1)(x-x_2)\\ \end{matrix}\right] L=[(x2x3)(xx2)(xx3)(x3x1)(xx3)(xx1)(x1x2)(xx1)(xx2)]

    • 此时该抛物线的方程可以表示为如下形式:

    • y = L ∗ 1 ∣ A ∣ ∗ [ y 1 y 2 y 3 ] y = L*\frac{1}{|A|}* \left[\begin{matrix} y_1\\ y_2\\ y_3\\ \end{matrix}\right] y=LA1 y1y2y3

    • 将系数提到最外面先算两个向量的乘积,此时方程形式为:

    • y = y 1 ∗ ( x 2 − x 3 ) ( x − x 2 ) ( x − x 3 ) ∣ A ∣ + y 2 ∗ ( x 3 − x 1 ) ( x − x 3 ) ( x − x 1 ) ∣ A ∣ + y 3 ∗ ( x 1 − x 2 ) ( x − x 1 ) ( x − x 2 ) ∣ A ∣ y= y_1*\frac{(x_2-x_3)(x-x_2)(x-x_3)}{|A|}+y_2*\frac{(x_3-x_1)(x-x_3)(x-x_1)}{|A|}+y_3*\frac{(x_1-x_2)(x-x_1)(x-x_2)}{|A|} y=y1A(x2x3)(xx2)(xx3)+y2A(x3x1)(xx3)(xx1)+y3A(x1x2)(xx1)(xx2)

    • 求行列式的值时根据有y(x1) = y1,所以把x1代入上式可以发现后两项的值均为零。即可得如下关系

    • y 1 = y 1 ∗ ( x 2 − x 3 ) ( x 1 − x 2 ) ( x 1 − x 3 ) ∣ A ∣ y_1 = y_1*\frac{(x_2-x_3)(x_1-x_2)(x_1-x_3)}{|A|} y1=y1A(x2x3)(x1x2)(x1x3)

    • 所以可以直接得到行列式的值为:

    • ∣ A ∣ = ( x 2 − x 3 ) ( x 1 − x 2 ) ( x 1 − x 3 ) |A|=(x_2-x_3)(x_1-x_2)(x_1-x_3) A=(x2x3)(x1x2)(x1x3)

    • 不放心的话也很好验证,用线代里面行列式的解法算一下就可以了。

    • 此时就可以把|A|代入抛物线的方程中,发现每个分子都可以和分母约掉一项。

    • 所以最后就得到了该抛物线的方程为:

    • y = y 1 ∗ ( x − x 2 ) ( x − x 3 ) ( x 1 − x 2 ) ( x 1 − x 3 ) + y 2 ∗ ( x − x 3 ) ( x − x 1 ) ( x 2 − x 1 ) ( x 2 − x 3 ) + y 3 ∗ ( x − x 1 ) ( x − x 2 ) ( x 3 − x 1 ) ( x 3 − x 2 ) y= y_1*\frac{(x-x_2)(x-x_3)}{(x_1-x_2)(x_1-x_3)}+y_2*\frac{(x-x_3)(x-x_1)}{(x_2-x_1)(x_2-x_3)}+y_3*\frac{(x-x_1)(x-x_2)}{(x_3-x_1)(x_3-x_2)} y=y1(x1x2)(x1x3)(xx2)(xx3)+y2(x2x1)(x2x3)(xx3)(xx1)+y3(x3x1)(x3x2)(xx1)(xx2)

    • 其中在约分的时候可能出现一些正负号的问题。如第二项约分时(x1-x3)与(x3-x1)差个符号,这时可以调整分母的(x1-x2)变为(x2-x1),保持形式的一致。这就是三点插值的公式的推导过程。

<think>嗯,用户想了解离散频谱中三点卷积幅值的校正方法。首先,我需要回忆一下相关的信号处理知识。离散频谱分析中,频谱泄漏是一个常见的问题,尤其是在进行FFT之后,幅值可能不准确。三点卷积法应该是一种校正方法,用来提高幅值的精确度。 我记得三点卷积法通常用于校正频谱峰值处的频率、幅值和相位。这种方法的基本思想是利用主瓣附近的三个采样点来进行插值,从而得到更精确的结果。可能需要用到卷积运算或者某种插值公式。比如,使用三个相邻的频谱线,通过某种加权平均或者多项式拟合来估计真实的幅值。 另外,用户提到的“三点卷积”可能指的是在频域中对三个点进行某种卷积操作,或者是指三点插值法。比如,有些文献中提到的Rife算法或Quinn算法,它们可能使用三个点来校正频率和幅值。例如,假设峰值出现在k附近,那么可以利用k-1, k, k+1这三个点的幅值来计算校正量。 还需要考虑频谱泄漏的影响,加窗函数的选择可能会影响校正的效果。比如,使用汉宁窗或汉明窗时,主瓣的形状不同,校正公式可能也需要调整。三点卷积法可能需要根据不同的窗函数来调整插值系数。 然后,我需要验证这些思路是否正确。例如,三点卷积幅值校正的具体步骤可能包括:1)找到频谱中的最大幅值点及其左右相邻点;2)计算这三个点的幅值比值;3)应用某种公式来估计真实幅值。例如,对于矩形窗,校正公式可能相对简单,而对于其他窗函数,可能需要更复杂的系数。 可能还需要查阅相关的文献或教材,确认三点卷积法的数学推导。比如,假设真实的频率偏离了整数倍的频率分辨率,导致幅值分布在相邻的频点上,通过这三个点的幅值可以估计出真实的幅值。具体的公式可能涉及到复数幅值的比值,或者使用实部和虚部进行计算。 另外,用户提到的“校正方法”可能还涉及相位校正,但问题中主要关注幅值。需要确保回答中区分清楚幅值校正和频率/相位校正的不同步骤。 总结一下,三点卷积幅值校正的步骤大致是:定位峰值点及其相邻点,利用这三个点的幅值,通过特定的插值公式计算校正后的幅值。具体的公式可能因窗函数的不同而变化,因此需要说明窗函数的影响以及如何调整参数。 最后,需要确保回答中的数学表达式正确使用LaTeX格式,行内公式用$...$,独立公式用$$...$$,并生成相关问题供用户进一步学习。</think>### 离散频谱三点卷积幅值校正方法 在离散频谱分析中,**三点卷积幅值校正**是一种通过主瓣附近采样点的幅值关系来修正频谱幅值误差的方法。其核心思想是通过频谱主瓣内相邻三个频点的幅值比例关系,结合窗函数的卷积特性,推导出真实幅值的修正公式[^1]。 #### 方法步骤 1. **定位主瓣峰值**: 假设离散频谱中某频率成分的主瓣峰值出现在第$k$条谱线,其左右相邻谱线分别为$k-1$和$k+1$,对应的幅值为$A_{k-1}$、$A_k$、$A_{k+1}$。 2. **构建幅值比例关系**: 根据窗函数的频谱卷积特性,定义幅值比参数$\delta$: $$ \delta = \frac{A_{k+1} - A_{k-1}}{2A_k - (A_{k-1} + A_{k+1})}} $$ 3. **幅值校正公式**: 真实幅值的修正公式为: $$ A_{\text{corrected}} = A_k \cdot \left(1 + \frac{\delta^2}{4}\right) $$ 该公式通过三点幅值的线性组合消除窗函数主瓣宽度带来的幅值衰减。 4. **窗函数修正系数**: 若使用汉宁窗(Hanning window),需引入修正系数$\alpha$: $$ A_{\text{corrected}} = \frac{2}{\alpha} \cdot \sqrt{A_{k-1}^2 + A_k^2 + A_{k+1}^2} $$ 其中$\alpha$由窗函数的能量归一化系数决定。 #### 应用示例 假设某信号加汉宁窗后的频谱幅值为$A_{k-1}=0.8$、$A_k=1.0$、$A_{k+1}=0.7$,则: 1. 计算$\delta = (0.7 - 0.8)/(2 \times 1.0 - (0.8 + 0.7)) = -0.1/0.5 = -0.2$ 2. 代入校正公式:$A_{\text{corrected}} = 1.0 \times (1 + (-0.2)^2/4) = 1.01$ #### 关键特性 - **适用性**:适用于加窗后频谱的主瓣幅值修正,尤其对高斯噪声环境下的单频信号效果显著[^1] - **限制条件**:需满足$\delta \in [-0.5, 0.5]$,超出范围时需改用多点校正法 ```python # Python示例:三点卷积幅值校正 def three_point_amplitude_correction(A_prev, A_curr, A_next): delta = (A_next - A_prev) / (2*A_curr - A_prev - A_next) A_corrected = A_curr * (1 + delta**2 / 4) return A_corrected ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值