基于Chirp激励的系统频响测试:菲涅尔涟漪成因与Welch算法平滑原理

文章目录

📣按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。

一、工程背景:为什么线性Chirp(变频信号)广泛应用

在电机控制、伺服、机器人、振动测试等工程场景中,我们需要快速获取系统幅频特性、相频特性(伯德图),以此分析谐振、带宽、相位滞后、滤波器特性。

主流两种测试方案对比:

  1. 单点正弦扫频:逐频率输入标准正弦波,等待系统稳态后用RMS计算增益相位。优点是曲线干净无波纹;缺点是速度极慢,全频段测试耗时数十分钟,无法用于快速在线标定。
  2. 线性调频Chirp(Chirp扫频信号):信号频率随时间线性连续变化,一次激励同时覆盖全部目标带宽,单次采集即可完成全频段辨识,测试效率提升数十倍,是工业自动化、嵌入式设备首选方案。

Chirp信号时域形式:

x ( t ) = A cos ⁡ ( 2 π f 0 t + π k t 2 ) x(t) = A\cos\left(2\pi f_0 t + \pi kt^2\right) x(t)=Acos(2πf0t+πkt2)

k k k 为扫频速率。理想无限长Chirp的频谱完全平坦,各频率能量均等,理论上可以精准还原系统真实频响。

二、Chirp实测固有的核心问题:频谱周期性波动(菲涅尔涟漪)

现实中无法采集无限长信号,原始Chirp必须被有限时长窗口截断,等价时域信号乘以矩形窗:

x cut ( t ) = x chirp ( t ) ⋅ w rect ( t ) x_{\text{cut}}(t) = x_{\text{chirp}}(t) \cdot w_{\text{rect}}(t) xcut(t)=xchirp(t)⋅wrect(t)

w rect ( t ) = { 1 , t 0 ≤ t ≤ t 0 + T 0 , 其他时刻 w_{\text{rect}}(t)= \begin{cases} 1,\quad & t_0 \le t \le t_0+T \\ 0,\quad & \text{其他时刻} \end{cases} wrect(t)={1,0,t0≤t≤t0+T其他时刻

根据傅里叶变换卷积定理:时域相乘等价频域卷积

X cut ( f ) = X chirp ( f ) ∗ W rect ( f ) X_{\text{cut}}(f) = X_{\text{chirp}}(f) * W_{\text{rect}}(f) Xcut(f)=Xchirp(f)∗Wrect(f)

1. 矩形窗的频域形态:Sinc振荡函数

长度为 T T T的矩形窗,傅里叶变换为:

W rect ( f ) = T ⋅ s i n c ( f T ) ⋅ e − j π f T W_{\text{rect}}(f) = T\cdot \mathrm{sinc}(fT) \cdot e^{-j\pi fT} Wrect(f)=T⋅sinc(fT)⋅e−jπfT

s i n c ( x ) = { sin ⁡ ( π x ) π x , x ≠ 0 1 , x = 0 \mathrm{sinc}(x) = \begin{cases} \displaystyle \frac{\sin(\pi x)}{\pi x}, & x \neq 0 \\ 1, & x = 0 \end{cases} sinc(x)=⎩ ⎨ ⎧πxsin(πx),1,x=0x=0

Sinc函数特征:中心主峰幅值1,两侧交替正负衰减振荡,零点间隔固定,旁瓣无限延伸永不归零。

2. 卷积带来周期性波纹(菲涅尔涟漪)

理想Chirp频谱是一条平直直线,与振荡的Sinc函数卷积后,平坦频谱被周期性调制,全频段出现一波高、一波低的规律性起伏,即菲涅尔涟漪

现象说明:

  1. 上图:无截断理想Chirp频谱平直,无任何起伏;
  2. 中图:矩形窗频域Sinc曲线,周期性正负振荡;
  3. 下图:截断后Chirp频谱产生连续波浪,直接导致最终伯德图曲线规律性抖动,干扰谐振点、带宽判断。

3. 关键认知误区澄清

很多人认为:Chirp扫到高频段时,低频分量应当几乎消失。该结论仅在无限长观测窗口 成立;

工程中窗口长度有限,Sinc函数拥有无限延伸旁瓣,卷积后所有频率点均存在能量,仅幅值随距离衰减。滑动窗口不断改变Sinc与目标频率的相对位置,同一频点在不同分段中功率忽高忽低,波纹持续存在。

三、抑制波纹的核心方案:Welch功率谱平均算法

Chirp 信号经过有限时长截断后,其频谱中容易出现周期性起伏。这类波纹本质上来自窗口截断带来的旁瓣泄漏:同一频率点在不同时间片段中被窗口"截取"时,可能落在主瓣、旁瓣或旁瓣谷值附近,因此功率估计会出现偏高或偏低。Welch 功率谱平均算法的作用,就是把这种由单次截取造成的偶然起伏转化为多次观测后的平均结果,从而显著降低谱线波纹。

上图展示了 Welch 平均对 Chirp 频谱波纹的抑制机理。红色曲线表示直接 FFT 或单段功率谱估计结果,周期性起伏较明显;蓝绿色曲线表示经过分段、加窗、功率谱平均后的结果,同一频率处的峰谷误差被多段平均抵消,曲线明显更平滑。图中曲线为机理示意,实际波纹幅度会随 Chirp 时长、分段长度、重叠率和窗函数类型变化。

1. Welch算法流程

Welch 算法并不是直接对整段信号做一次 FFT,而是将整段时域信号分成多个短片段,对每个片段分别估计功率谱,最后在相同频率点上求平均。完整流程如下:

  1. 滑动重叠分段

    将整条 Chirp 时域信号切分为多个短片段。工程中常用 50% 重叠,即相邻两段有一半采样点重复使用。重叠分段可以增加有效统计次数,使同一频率附近获得更多观测样本。

  2. 每段乘汉宁窗

    对每个片段乘以 Hann 窗,避免矩形窗硬截断带来的强旁瓣泄漏。相比矩形窗,汉宁窗的旁瓣衰减更快,可以从源头减弱由 Sinc 旁瓣引起的频谱振荡。

  3. 分段FFT并计算功率谱

    对第 (k) 个分段信号做 FFT,得到 (X_k(f)),再取模平方得到该分段的功率谱:

    P k ( f ) = ∣ X k ( f ) ∣ 2 P_k(f)=|X_k(f)|^2 Pk(f)=∣Xk(f)∣2

    这里取平方的意义与时域 RMS 中的"平方"类似,都是先把正负振荡转化为能量量,再进行统计。

  4. 同频点功率平均

    对所有分段在同一频率点上的功率值求平均,得到 Welch 平均功率谱:

    P avg ( f ) = 1 K ∑ k = 1 K P k ( f ) P_{\text{avg}}(f)=\frac{1}{K}\sum_{k=1}^{K}P_k(f) Pavg(f)=K1k=1∑KPk(f)

    其中,(K) 为参与平均的分段数量。

2. 为什么Welch平均能抹平波纹

单次 FFT 的频谱结果很容易受到窗口位置影响。对于某个目标频率,不同分段与该频率的相对位置并不完全相同:

  • 当窗口主瓣接近目标频率时,该频点功率估计偏大;
  • 当旁瓣或旁瓣谷值落在目标频率附近时,该频点功率估计偏小;
  • 当分段数量增加后,这些偏高和偏低的估计会在平均过程中相互抵消。

因此,Welch 算法的关键并不是"消除"每一段中的波纹,而是让不同分段中的波纹相位错开,再通过同频点功率平均降低周期性起伏。最终得到的 (P_{\text{avg}}(f)) 比单次 FFT 功率谱更加稳定,也更适合用于后续的幅频响应估计。

3. RMS与Welch的同源关系

时域 RMS 和频域 Welch 在思想上是一致的,二者都是"先平方,再平均"。

时域 RMS 的计算过程为:

x RMS = 1 N ∑ n = 1 N x 2 n x_{\text{RMS}}=\sqrt{\frac{1}{N}\sum_{n=1}^{N}x^2n} xRMS=N1n=1∑Nx2n

它先对时域采样值平方,把正负交替的振荡转化为能量,再对一段时间内的能量求平均,最后开根号得到等效幅值。

Welch 算法则是在频域中做类似操作。它对每个分段的 FFT 结果取模平方,得到频率点上的功率,再对多个分段的同频点功率求平均:

P avg ( f ) = 1 K ∑ k = 1 K ∣ X k ( f ) ∣ 2 P_{\text{avg}}(f)=\frac{1}{K}\sum_{k=1}^{K}|X_k(f)|^2 Pavg(f)=K1k=1∑K∣Xk(f)∣2

因此,Welch 可以理解为频域版本的 RMS 平滑。区别在于,Welch 的直接输出是功率谱。如果后续需要频域幅值,可以在功率谱平均之后再开根号:

A ( f ) = P avg ( f ) A(f)=\sqrt{P_{\text{avg}}(f)} A(f)=Pavg(f)

需要注意的是,应该先平均功率,再开根号,而不是先对每段幅值开根号后再平均。前者对应能量平均,物理意义更稳定。

4. 配套优化手段

为了进一步降低 Chirp 频谱中的波纹,可以配合以下参数优化:

  1. 使用汉宁窗加权

    用 Hann 窗替代矩形窗,可以显著降低旁瓣泄漏,减少由硬截断引起的 Sinc 型振荡。

  2. 合理增大分段长度 (nperseg)

    较长的分段可以提高频率分辨率,使每段 FFT 的频率刻度更细。但分段过长会减少平均次数,因此 (nperseg) 需要在频率分辨率和平均平滑能力之间折中。

  3. 增加分段数量

    分段数量越多,同一频率点参与平均的功率样本越多,随机起伏和周期性波纹越容易被压低。可以通过延长总采样时长、提高重叠率或适当减小分段长度来增加分段数量。

  4. 延长Chirp激励时长

    更长的 Chirp 时长可以减弱整体截断效应,使扫频过程更加充分,降低由有限时长带来的基础波纹强度。

综上,Welch 算法通过"重叠分段、加窗、功率谱计算、同频点平均"四个步骤,把单次 FFT 中明显的周期性谱波纹转化为多段能量统计后的平滑结果。对于 Chirp 激励下的幅频响应估计,它是一种简单、稳定且工程上非常常用的波纹抑制方法。

四、总结

  1. 工程使用Chirp信号的核心优势:单次激励覆盖全频段,测试速度远快于单点正弦扫频;
  2. Chirp固有缺陷:有限时长矩形截断产生Sinc频域振荡,卷积后频谱出现菲涅尔涟漪,伯德图规律性抖动;
  3. 波纹根源:时域硬截断+Sinc无限旁瓣卷积,滑动窗口使各分段同频功率高低交替;
  4. Welch算法通过重叠分段、汉宁窗、跨分段同频功率平均,利用峰谷对冲平滑周期性波纹,是工业实测频响曲线的标准底层算法;
  5. Welch与RMS同源,均依靠"平方+平均"抑制振荡起伏,是信号能量平滑的通用思路。