自相关滤波详解
自相关滤波是信号处理领域中一种重要的技术,它利用信号与其自身的相关性来提取有用信息,滤除噪声,增强特定信号特征。
自相关的基本概念
自相关是描述信号在不同时间点之间相似度的一个重要指标。对于一个确定性连续时间信号 x ( t ) x(t) x(t),其自相关函数 R x x ( τ ) R_{xx}(\tau) Rxx(τ) 定义为:
R x x ( τ ) = lim T → ∞ 1 2 T ∫ − T T x ( t ) x ( t + τ ) d t R_{xx}(\tau) = \lim_{T \to \infty} \frac{1}{2T} \int_{-T}^{T} x(t)x(t+\tau) dt Rxx(τ)=T→∞lim2T1∫−TTx(t)x(t+τ)dt
对于随机过程,自相关函数定义为该信号与其时间延迟版本的乘积期望值:
R x x ( τ ) = E [ x ( t ) x ( t + τ ) ] R_{xx}(\tau) = \mathbb{E}[x(t)x(t+\tau)] Rxx(τ)=E[x(t)x(t+τ)]
其中 E [ ⋅ ] \mathbb{E}[\cdot] E[⋅] 表示期望操作, τ \tau τ 是时间延迟。对于离散时间信号 x [ n ] x[n] x[n],自相关函数可以表示为:
R x x [ k ] = E [ x [ n ] x [ n + k ] ] R_{xx}[k] = \mathbb{E}[x[n]x[n+k]] Rxx[k]=E[x[n]x[n+k]]
若信号是平稳随机过程,则其自相关函数只与时间延迟 k k k 有关,而与具体时间 n n n 无关。在实际应用中,由于我们只能获取有限长度的信号,自相关函数通常通过时间平均的方式来估计。对于长度为 N N N 的离散信号 x [ n ] , n = 0 , 1 , . . . , N − 1 x[n], n = 0, 1, ..., N-1 x[n],n=0,1,...,N−1,有偏自相关估计为:
R ^ x x [ k ] = 1 N ∑ n = 0 N − ∣ k ∣ − 1 x [ n ] x [ n + ∣ k ∣ ] , ∣ k ∣ < N \hat{R}_{xx}[k] = \frac{1}{N} \sum_{n=0}^{N-|k|-1} x[n]x[n+|k|], \quad |k| < N R^xx[k]=N1n=0∑N−∣k∣−1x[n]x[n+∣k∣],∣k∣<N
无偏自相关估计为:
R ^ x x [ k ] = 1 N − ∣ k ∣ ∑ n = 0 N − ∣ k ∣ − 1 x [ n ] x [ n + ∣ k ∣ ] , ∣ k ∣ < N \hat{R}_{xx}[k] = \frac{1}{N-|k|} \sum_{n=0}^{N-|k|-1} x[n]x[n+|k|], \quad |k| < N R^xx[k]=N−∣k∣1n=0∑N−∣k∣−1x[n]x[n+∣k∣],∣k∣<N
自相关函数具有几个重要的数学性质:
- 对称性: R x x ( − τ ) = R x x ( τ ) R_{xx}(-\tau) = R_{xx}(\tau) Rxx(−τ)=Rxx(τ) 对于实值信号
- 最大值原理: ∣ R x x ( τ ) ∣ ≤ R x x ( 0 ) |R_{xx}(\tau)| \leq R_{xx}(0) ∣Rxx(τ)∣≤Rxx(0) 对于任意 τ \tau τ
- 自相关函数的傅里叶变换等于信号功率谱密度: S x x ( f ) = F { R x x ( τ ) } S_{xx}(f) = \mathcal{F}\{R_{xx}(\tau)\} Sxx(f)=F{Rxx(τ)}
最后一条性质是维纳-辛钦定理(Wiener-Khinchin Theorem),是频谱分析的理论基础之一。对于能量有限的确定性信号,功率谱密度可以表示为:
S x x ( f ) = ∣ X ( f ) ∣ 2 S_{xx}(f) = |X(f)|^2 Sxx(f)=∣X(f)∣2
其中 X ( f ) X(f) X(f) 是信号 x ( t ) x(t) x(t) 的傅里叶变换。
自相关滤波的基本原理
自相关滤波的核心思想是利用信号自相关特性来区分有用信号和噪声。在许多实际应用中,有用信号往往具有强的相关性,而噪声(特别是白噪声)则具有弱的相关性。考虑一个包含噪声的连续时间信号模型:
y ( t ) = s ( t ) + w ( t ) y(t) = s(t) + w(t) y(t)=s(t)+w(t)
其中 s ( t ) s(t) s(t) 是有用信号, w ( t ) w(t) w(t) 是加性噪声。假设噪声是零均值的,并且与信号不相关,则该混合信号的自相关函数为:
R y y ( τ ) = R s s ( τ ) + R w w ( τ ) + R s w ( τ ) + R w s ( τ ) R_{yy}(\tau) = R_{ss}(\tau) + R_{ww}(\tau) + R_{sw}(\tau) + R_{ws}(\tau) Ryy(τ)=Rss(τ)+Rww(τ)+Rsw(τ)+Rws(τ)
如果噪声与信号不相关,即 R s w ( τ ) = R w s ( τ ) = 0 R_{sw}(\tau) = R_{ws}(\tau) = 0 Rsw(τ)=Rws(τ)=0,则:
R y y ( τ ) = R s s ( τ ) + R w w ( τ ) R_{yy}(\tau) = R_{ss}(\tau) + R_{ww}(\tau) Ryy(τ)=Rss(τ)+Rww(τ)
如果噪声是白噪声,其自相关函数为:
R w w ( τ ) = σ w 2 δ ( τ ) R_{ww}(\tau) = \sigma_w^2 \delta(\tau) Rww(τ)=σw2δ(τ)
其中 σ w 2 \sigma_w^2 σw2 是噪声方差, δ ( τ ) \delta(\tau) δ(τ) 是狄拉克德尔塔函数。对于离散情况:
R w w [ k ] = σ w 2 δ [ k ] R_{ww}[k] = \sigma_w^2 \delta[k] Rww[k]=σw2δ[k]
因此,当 τ ≠ 0 \tau \neq 0 τ=0 或 k ≠ 0 k \neq 0 k=0 时, R y y ( τ ) = R s s ( τ ) R_{yy}(\tau) = R_{ss}(\tau) Ryy(τ)=Rss(τ) 或 R y y [ k ] = R s s [ k ] R_{yy}[k] = R_{ss}[k] Ryy[k]=Rss[k],这意味着非零延迟的自相关值主要由信号决定,噪声的贡献被大大减小。自相关滤波就是基于这一原理,通过对信号进行自相关处理,然后应用适当的滤波器来提取所需的信息。
自相关滤波器的数学模型
一个一般化的自相关滤波器可以用如下操作序列描述:
- 计算输入信号 y ( t ) y(t) y(t) 的自相关函数 R y y ( τ ) R_{yy}(\tau) Ryy(τ)
- 设计和应用一个滤波器 h ( τ ) h(\tau) h(τ) 到自相关函数
- 从滤波后的自相关函数中重构出增强的信号
在数学上,滤波过程可以表示为自相关函数与滤波器核的卷积:
R ^ s s ( τ ) = ( R y y ∗ h ) ( τ ) = ∫ − ∞ ∞ R y y ( α ) h ( τ − α ) d α \hat{R}_{ss}(\tau) = (R_{yy} * h)(\tau) = \int_{-\infty}^{\infty} R_{yy}(\alpha) h(\tau - \alpha) d\alpha R^ss(τ)=(Ryy∗h)(τ)=∫−∞∞Ryy(α)h(τ−α)dα
对于离散信号:
R ^ s s [ k ] = ( R y y ∗ h ) [ k ] = ∑ m = − ∞ ∞ R y y [ m ] h [ k − m ] \hat{R}_{ss}[k] = (R_{yy} * h)[k] = \sum_{m=-\infty}^{\infty} R_{yy}[m] h[k-m] R^ss[k]=(Ryy∗h)[k]=m=−∞∑∞Ryy[m]h[k−m]
在频域中,这相当于:
S ^ s s ( f ) = S y y ( f ) ⋅ H ( f ) \hat{S}_{ss}(f) = S_{yy}(f) \cdot H(f) S^ss(f)=Syy(f)⋅H(f)
其中 S ^ s s ( f ) \hat{S}_{ss}(f) S^ss(f), S y y ( f ) S_{yy}(f) Syy(f) 和 H ( f ) H(f) H(f) 分别是 R ^ s s ( τ ) \hat{R}_{ss}(\tau) R^ss(τ), R y y ( τ ) R_{yy}(\tau) Ryy(τ) 和 h ( τ ) h(\tau) h(τ) 的傅里叶变换。滤波器 h ( τ ) h(\tau) h(τ) 或 H ( f ) H(f) H(f) 的设计取决于信号和噪声的特性以及具体应用目标。一种理论上最优的滤波器是维纳滤波器,它基于最小均方误差准则:
H w i e n e r ( f ) = S s s ( f ) S s s ( f ) + S w w ( f ) H_{wiener}(f) = \frac{S_{ss}(f)}{S_{ss}(f) + S_{ww}(f)} Hwiener(f)=Sss(f)+Sww(f)Sss(f)
其中 S s s ( f ) S_{ss}(f) Sss(f) 和 S w w ( f ) S_{ww}(f) Sww(f) 分别是信号和噪声的功率谱密度。从滤波后的自相关函数重构信号是一个挑战性问题。对于随机信号,完全精确的重构通常是不可能的,因为自相关处理丢失了相位信息。然而,对于某些特定类型的信号,如最小相位信号,可以通过求解同态方程来实现重构:
log S ^ s s ( f ) = log ∣ X ^ ( f ) ∣ 2 \log \hat{S}_{ss}(f) = \log |\hat{X}(f)|^2 logS^ss(f)=log∣X^(f)∣2
然后通过复倒谱分析计算:
x ^ ( t ) = F − 1 { e 1 2 log S ^ s s ( f ) + j ϕ m i n ( f ) } \hat{x}(t) = \mathcal{F}^{-1}\{e^{\frac{1}{2}\log \hat{S}_{ss}(f) + j\phi_{min}(f)}\} x^(t)=F−1{e21logS^ss(f)+jϕmin(f)}
其中 ϕ m i n ( f ) \phi_{min}(f) ϕmin(f) 是与 log S ^ s s ( f ) \log \hat{S}_{ss}(f) logS^ss(f) 通过希尔伯特变换关联的最小相位函数:
ϕ m i n ( f ) = − H { log S ^ s s ( f ) } \phi_{min}(f) = -\mathcal{H}\{\log \hat{S}_{ss}(f)\} ϕmin(f)=−H{logS^ss(f)}
其中 H { ⋅ } \mathcal{H}\{\cdot\} H{⋅} 表示希尔伯特变换:
H { g ( f ) } = 1 π ∫ − ∞ ∞ g ( ξ ) f − ξ d ξ \mathcal{H}\{g(f)\} = \frac{1}{\pi} \int_{-\infty}^{\infty} \frac{g(\xi)}{f - \xi} d\xi H{g(f)}=π1∫−∞∞f−ξg(ξ)dξ
这种方法在语音处理和地震信号分析中有应用。
自相关滤波器的频域解释
自相关滤波在频域中有清晰的解释。根据维纳-辛钦定理,信号的功率谱密度(PSD)是其自相关函数的傅里叶变换:
S y y ( f ) = F { R y y ( τ ) } = ∫ − ∞ ∞ R y y ( τ ) e − j 2 π f τ d τ S_{yy}(f) = \mathcal{F}\{R_{yy}(\tau)\} = \int_{-\infty}^{\infty} R_{yy}(\tau) e^{-j2\pi f\tau} d\tau Syy(f)=F{Ryy(τ)}=∫−∞∞Ryy(τ)e−j2πfτdτ
对于离散信号:
S y y ( f ) = ∑ k = − ∞ ∞ R y y [ k ] e − j 2 π f k S_{yy}(f) = \sum_{k=-\infty}^{\infty} R_{yy}[k] e^{-j2\pi fk} Syy(f)=k=−∞∑∞Ryy[k]e−j2πfk
在频域中,自相关滤波可以表示为:
S ^ s s ( f ) = S y y ( f ) ⋅ H ( f ) \hat{S}_{ss}(f) = S_{yy}(f) \cdot H(f) S^ss(f)=Syy(f)⋅H(f)
对于白噪声污染的信号,其功率谱密度为:
S y y ( f ) = S s s ( f ) + σ w 2 S_{yy}(f) = S_{ss}(f) + \sigma_w^2 Syy(f)=Sss(f)+σw2
通过设计适当的频域滤波器 H ( f ) H(f) H(f),我们可以增强特定频率范围内的信号分量,同时抑制噪声。对于维纳滤波器:
H w i e n e r ( f ) = S s s ( f ) S s s ( f ) + S w w ( f ) H_{wiener}(f) = \frac{S_{ss}(f)}{S_{ss}(f) + S_{ww}(f)} Hwiener(f)=Sss(f)+Sww(f)Sss(f)
当信噪比(SNR)很高 S s s ( f ) ≫ S w w ( f ) S_{ss}(f) \gg S_{ww}(f) Sss(f)≫Sww(f) 时, H w i e n e r ( f ) ≈ 1 H_{wiener}(f) \approx 1 Hwiener(f)≈1;当SNR很低 S s s ( f ) ≪ S w w ( f ) S_{ss}(f) \ll S_{ww}(f) Sss(f)≪Sww(f) 时, H w i e n e r ( f ) ≈ 0 H_{wiener}(f) \approx 0 Hwiener(f)≈0。维纳滤波器的输出信号功率谱密度为:
S ^ s s ( f ) = S s s 2 ( f ) S s s ( f ) + S w w ( f ) \hat{S}_{ss}(f) = \frac{S_{ss}^2(f)}{S_{ss}(f) + S_{ww}(f)} S^ss(f)=Sss(f)+Sww(f)Sss2(f)
维纳滤波器的均方误差可以表示为:
M S E = ∫ − ∞ ∞ S s s ( f ) S w w ( f ) S s s ( f ) + S w w ( f ) d f MSE = \int_{-\infty}^{\infty} \frac{S_{ss}(f) S_{ww}(f)}{S_{ss}(f) + S_{ww}(f)} df MSE=∫−∞∞Sss(f)+Sww(f)Sss(f)Sww(f)df
对于有色噪声情况,预白化滤波可以提高性能。预白化滤波器的频率响应为:
W ( f ) = 1 S w w ( f ) W(f) = \frac{1}{\sqrt{S_{ww}(f)}} W(f)=Sww(f)1
预白化后的信号谱为:
S y ′ ( f ) = W 2 ( f ) S y y ( f ) = S s s ( f ) S w w ( f ) + 1 S_{y'}(f) = W^2(f) S_{yy}(f) = \frac{S_{ss}(f)}{S_{ww}(f)} + 1 Sy′(f)=W2(f)Syy(f)=Sww(f)Sss(f)+1
在预白化域中应用维纳滤波:
H w i e n e r ′ ( f ) = S s s ( f ) S w w ( f ) S s s ( f ) S w w ( f ) + 1 = S s s ( f ) S s s ( f ) + S w w ( f ) H'_{wiener}(f) = \frac{\frac{S_{ss}(f)}{S_{ww}(f)}}{\frac{S_{ss}(f)}{S_{ww}(f)} + 1} = \frac{S_{ss}(f)}{S_{ss}(f) + S_{ww}(f)} Hwiener′(f)=Sww(f)Sss(f)+1Sww(f)Sss(f)=Sss(f)+Sww(f)Sss(f)
总体滤波器为:
H t o t a l ( f ) = W ( f ) ⋅ H w i e n e r ′ ( f ) = S s s ( f ) S w w ( f ) ( S s s ( f ) + S w w ( f ) ) H_{total}(f) = W(f) \cdot H'_{wiener}(f) = \frac{S_{ss}(f)}{S_{ww}(f)(S_{ss}(f) + S_{ww}(f))} Htotal(f)=W(f)⋅Hwiener′(f)=Sww(f)(Sss(f)+Sww(f))Sss(f)
自相关滤波的时域实现
在时域中实现自相关滤波通常涉及以下数学步骤:
-
估计输入信号的自相关函数:
对于长度为N的离散信号 y [ n ] y[n] y[n],其自相关估计为:R ^ y y [ k ] = 1 N − ∣ k ∣ ∑ n = 0 N − ∣ k ∣ − 1 y [ n ] y [ n + ∣ k ∣ ] , ∣ k ∣ < N \hat{R}_{yy}[k] = \frac{1}{N-|k|} \sum_{n=0}^{N-|k|-1} y[n]y[n+|k|], \quad |k| < N R^yy[k]=N−∣k∣1n=0∑N−∣k∣−1y[n]y[n+∣k∣],∣k∣<N
-
设计滤波器时域响应:
对于给定的频域目标响应 H ( f ) H(f) H(f),可以通过逆傅里叶变换计算时域响应:h [ n ] = F − 1 { H ( f ) } h[n] = \mathcal{F}^{-1}\{H(f)\} h[n]=F−1{H(f)}
实际中,通常会应用窗口函数 w [ n ] w[n] w[n] 以减小频谱泄漏:
h w [ n ] = h [ n ] ⋅ w [ n ] h_w[n] = h[n] \cdot w[n] hw[n]=h[n]⋅w[n]
-
对自相关函数应用滤波器:
R ^ s s [ k ] = ∑ m = − M M R ^ y y [ k − m ] h w [ m ] \hat{R}_{ss}[k] = \sum_{m=-M}^{M} \hat{R}_{yy}[k-m] h_w[m] R^ss[k]=m=−M∑MR^yy[k−m]hw[m]
其中 M M M 是滤波器长度的一半。
-
从滤波后的自相关函数重构信号:
对于自回归(AR)过程,可以通过求解Yule-Walker方程组获得AR参数:∑ i = 1 p a i R ^ s s [ k − i ] = − R ^ s s [ k ] , k = 1 , 2 , . . . , p \sum_{i=1}^{p} a_i \hat{R}_{ss}[k-i] = -\hat{R}_{ss}[k], \quad k = 1,2,...,p i=1∑paiR^ss[k−i]=−R^ss[k],k=1,2,...,p
或矩阵形式:
[ R ^ s s [ 0 ] R ^ s s [ 1 ] ⋯ R ^ s s [ p − 1 ] R ^ s s [ 1 ] R ^ s s [ 0 ] ⋯ R ^ s s [ p − 2 ] ⋮ ⋮ ⋱ ⋮ R ^ s s [ p − 1 ] R ^ s s [ p − 2 ] ⋯ R ^ s s [ 0 ] ] [ a 1 a 2 ⋮ a p ] = [ − R ^ s s [ 1 ] − R ^ s s [ 2 ] ⋮ − R ^ s s [ p ] ] \begin{bmatrix} \hat{R}_{ss}[0] & \hat{R}_{ss}[1] & \cdots & \hat{R}_{ss}[p-1] \\ \hat{R}_{ss}[1] & \hat{R}_{ss}[0] & \cdots & \hat{R}_{ss}[p-2] \\ \vdots & \vdots & \ddots & \vdots \\ \hat{R}_{ss}[p-1] & \hat{R}_{ss}[p-2] & \cdots & \hat{R}_{ss}[0] \end{bmatrix} \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_p \end{bmatrix} = \begin{bmatrix} -\hat{R}_{ss}[1] \\ -\hat{R}_{ss}[2] \\ \vdots \\ -\hat{R}_{ss}[p] \end{bmatrix} R^ss[0]R^ss[1]⋮R^ss[p−1]R^ss[1]R^ss[0]⋮R^ss[p−2]⋯⋯⋱⋯R^ss[p−1]R^ss[p−2]⋮R^ss[0] a1a2⋮ap = −R^ss[1]−R^ss[2]⋮−R^ss[p]
求解得到AR参数 { a i } \{a_i\} {ai} 后,可以计算激励方差:
σ e 2 = R ^ s s [ 0 ] + ∑ i = 1 p a i R ^ s s [ i ] \sigma_e^2 = \hat{R}_{ss}[0] + \sum_{i=1}^{p} a_i \hat{R}_{ss}[i] σe2=R^ss[0]+i=1∑paiR^ss[i]
然后生成白噪声序列 e [ n ] e[n] e[n],方差为 σ e 2 \sigma_e^2 σe2,通过AR模型方程重构信号:
s ^ [ n ] = e [ n ] − ∑ i = 1 p a i s ^ [ n − i ] \hat{s}[n] = e[n] - \sum_{i=1}^{p} a_i \hat{s}[n-i] s^[n]=e[n]−i=1∑pais^[n−i]
对于更复杂的ARMA过程,可以使用迭代方法,如迭代预白化或最大似然估计来识别模型参数。
自相关滤波的统计特性分析
自相关滤波器的性能分析需要考虑统计特性。对于输入信号 y [ n ] = s [ n ] + w [ n ] y[n] = s[n] + w[n] y[n]=s[n]+w[n],自相关估计的均值为:
E [ R ^ y y [ k ] ] = R s s [ k ] + R w w [ k ] \mathbb{E}[\hat{R}_{yy}[k]] = R_{ss}[k] + R_{ww}[k] E[R^yy[k]]=Rss[k]+Rww[k]
对于白噪声 w [ n ] w[n] w[n], R w w [ k ] = σ w 2 δ [ k ] R_{ww}[k] = \sigma_w^2 \delta[k] Rww[k]=σw2δ[k],因此:
E [ R ^ y y [ k ] ] = R s s [ k ] + σ w 2 δ [ k ] \mathbb{E}[\hat{R}_{yy}[k]] = R_{ss}[k] + \sigma_w^2 \delta[k] E[R^yy[k]]=Rss[k]+σw2δ[k]
自相关估计的方差与信号的四阶矩(四次累积量)有关。对于高斯过程,四阶矩可以用二阶矩表示:
Var [ R ^ y y [ k ] ] ≈ 1 N ∑ m = − ∞ ∞ ( R y y [ m + k ] R y y [ m − k ] + R y y [ m ] R y y [ m + 2 k ] ) \text{Var}[\hat{R}_{yy}[k]] \approx \frac{1}{N} \sum_{m=-\infty}^{\infty} (R_{yy}[m+k]R_{yy}[m-k] + R_{yy}[m]R_{yy}[m+2k]) Var[R^yy[k]]≈N1m=−∞∑∞(Ryy[m+k]Ryy[m−k]+Ryy[m]Ryy[m+2k])
对于长度为 N N N 的信号,自相关估计的方差近似为:
Var [ R ^ y y [ k ] ] ≈ 1 N ∑ m = − ( N − 1 ) N − 1 ( 1 − ∣ m ∣ N ) ( R y y [ m + k ] R y y [ m − k ] ) \text{Var}[\hat{R}_{yy}[k]] \approx \frac{1}{N} \sum_{m=-(N-1)}^{N-1} (1-\frac{|m|}{N})(R_{yy}[m+k]R_{yy}[m-k]) Var[R^yy[k]]≈N1m=−(N−1)∑N−1(1−N∣m∣)(Ryy[m+k]Ryy[m−k])
功率谱密度估计的方差分析更为复杂。对于有偏谱估计,在频率 f f f 处的方差为:
Var [ S ^ y y ( f ) ] ≈ 1 N ∑ k = − ( N − 1 ) N − 1 ( 1 − ∣ k ∣ N ) w [ k ] 2 ( S y y 2 ( f ) + 1 N ∑ m = − ( N − 1 ) N − 1 S y y ( f − m N ) S y y ( f + m N ) ) \text{Var}[\hat{S}_{yy}(f)] \approx \frac{1}{N} \sum_{k=-(N-1)}^{N-1} (1-\frac{|k|}{N}) w[k]^2 \left( S_{yy}^2(f) + \frac{1}{N} \sum_{m=-(N-1)}^{N-1} S_{yy}(f-\frac{m}{N}) S_{yy}(f+\frac{m}{N}) \right) Var[S^yy(f)]≈N1k=−(N−1)∑N−1(1−N∣k∣)w[k]2 Syy2(f)+N1m=−(N−1)∑N−1Syy(f−Nm)Syy(f+Nm)
其中 w [ k ] w[k] w[k] 是窗口函数。对于维纳滤波器,输出信噪比可以表示为:
S N R o u t ( f ) = ∣ H w i e n e r ( f ) ∣ 2 S s s ( f ) ∣ 1 − H w i e n e r ( f ) ∣ 2 S s s ( f ) + ∣ H w i e n e r ( f ) ∣ 2 S w w ( f ) SNR_{out}(f) = \frac{|H_{wiener}(f)|^2 S_{ss}(f)}{|1-H_{wiener}(f)|^2 S_{ss}(f) + |H_{wiener}(f)|^2 S_{ww}(f)} SNRout(f)=∣1−Hwiener(f)∣2Sss(f)+∣Hwiener(f)∣2Sww(f)∣Hwiener(f)∣2Sss(f)
代入维纳滤波器表达式,可得:
S N R o u t ( f ) = S s s 2 ( f ) S w w ( f ) ⋅ S s s ( f ) = S s s ( f ) S w w ( f ) = S N R i n ( f ) SNR_{out}(f) = \frac{S_{ss}^2(f)}{S_{ww}(f) \cdot S_{ss}(f)} = \frac{S_{ss}(f)}{S_{ww}(f)} = SNR_{in}(f) SNRout(f)=Sww(f)⋅Sss(f)Sss2(f)=Sww(f)Sss(f)=SNRin(f)
这表明维纳滤波器不会提高单个频率分量的信噪比,而是通过优化各频率分量的权重来最小化总体均方误差。滤波后信号的自相关函数与原始信号自相关函数的关系为:
R ^ s s [ k ] = F − 1 { S ^ s s ( f ) } = F − 1 { S y y ( f ) ⋅ H ( f ) } \hat{R}_{ss}[k] = \mathcal{F}^{-1}\{\hat{S}_{ss}(f)\} = \mathcal{F}^{-1}\{S_{yy}(f) \cdot H(f)\} R^ss[k]=F−1{S^ss(f)}=F−1{Syy(f)⋅H(f)}
R ^ s s [ k ] = ( R y y ∗ r h ) [ k ] \hat{R}_{ss}[k] = (R_{yy} * r_h)[k] R^ss[k]=(Ryy∗rh)[k]
其中 r h [ k ] r_h[k] rh[k] 是滤波器 h [ n ] h[n] h[n] 的自相关函数。
自相关滤波的数学框架
从更一般的角度看,自相关滤波可以在函数空间中表述为一个投影问题。令 H \mathcal{H} H 表示希尔伯特空间,包含所有可能的信号, S ⊂ H \mathcal{S} \subset \mathcal{H} S⊂H 是信号子空间, W ⊂ H \mathcal{W} \subset \mathcal{H} W⊂H 是噪声子空间。理想的自相关滤波是将观测信号 y y y 投影到信号子空间 S \mathcal{S} S 上:
s ^ = P S ( y ) \hat{s} = P_{\mathcal{S}}(y) s^=PS(y)
其中 P S P_{\mathcal{S}} PS 是投影算子。
在子空间方法中,信号的自相关矩阵可以进行特征分解:
R y y = ∑ i = 1 N λ i u i u i H \mathbf{R}_{yy} = \sum_{i=1}^{N} \lambda_i \mathbf{u}_i \mathbf{u}_i^H Ryy=i=1∑NλiuiuiH
其中 λ i \lambda_i λi 是特征值, u i \mathbf{u}_i ui 是对应的特征向量。
当信号空间维度为 K < N K < N K<N,且信噪比足够高时,自相关矩阵的 K K K 个最大特征值对应的特征向量张成信号子空间,其余特征向量张成噪声子空间:
R y y = ∑ i = 1 K λ i u i u i H + ∑ i = K + 1 N λ i u i u i H = U s Λ s U s H + U n Λ n U n H \mathbf{R}_{yy} = \sum_{i=1}^{K} \lambda_i \mathbf{u}_i \mathbf{u}_i^H + \sum_{i=K+1}^{N} \lambda_i \mathbf{u}_i \mathbf{u}_i^H = \mathbf{U}_s \mathbf{\Lambda}_s \mathbf{U}_s^H + \mathbf{U}_n \mathbf{\Lambda}_n \mathbf{U}_n^H Ryy=i=1∑KλiuiuiH+i=K+1∑NλiuiuiH=UsΛsUsH+UnΛnUnH
信号子空间投影算子为:
P s = U s U s H \mathbf{P}_s = \mathbf{U}_s \mathbf{U}_s^H Ps=UsUsH
信号估计为:
s ^ = P s y \hat{\mathbf{s}} = \mathbf{P}_s \mathbf{y} s^=Psy
在频域中,子空间方法可以通过奇异值分解(SVD)实现。对于信号的时频表示 Y ( t , f ) Y(t,f) Y(t,f),其SVD为:
Y ( t , f ) = ∑ i = 1 r σ i u i ( t ) v i ∗ ( f ) Y(t,f) = \sum_{i=1}^{r} \sigma_i u_i(t)v_i^*(f) Y(t,f)=i=1∑rσiui(t)vi∗(f)
其中 σ i \sigma_i σi 是奇异值, u i ( t ) u_i(t) ui(t) 和 v i ( f ) v_i(f) vi(f) 分别是时域和频域奇异向量。通过只保留前 K K K 个奇异值分量,可以实现低秩近似:
S ^ ( t , f ) = ∑ i = 1 K σ i u i ( t ) v i ∗ ( f ) \hat{S}(t,f) = \sum_{i=1}^{K} \sigma_i u_i(t)v_i^*(f) S^(t,f)=i=1∑Kσiui(t)vi∗(f)
这种表述在多分辨率分析中特别有用。
非线性自相关滤波
传统的自相关滤波是基于二阶统计量的线性方法。对于非高斯信号或非线性系统,高阶统计量(如三阶矩、四阶矩)包含了更多信息。 n n n 阶累积量是信号统计特性的更完整描述,对于零均值随机变量 X X X,其一维情况下定义为:
κ n = E [ X n ] − ∑ p ∈ P ( n ) ∏ B ∈ p κ ∣ B ∣ \kappa_n = \mathbb{E}[X^n] - \sum_{p \in P(n)} \prod_{B \in p} \kappa_{|B|} κn=E[Xn]−p∈P(n)∑B∈p∏κ∣B∣
其中 P ( n ) P(n) P(n) 是整数 n n n 的所有分划集合, ∣ B ∣ |B| ∣B∣ 是分划块 B B B 的元素个数。特别地,二阶累积量等于二阶矩(方差),三阶累积量等于三阶矩,四阶累积量等于四阶矩减去二阶矩的组合:
κ
2
=
E
[
X
2
]
−
E
[
X
]
2
=
Var
[
X
]
\kappa_2 = \mathbb{E}[X^2] - \mathbb{E}[X]^2 = \text{Var}[X]
κ2=E[X2]−E[X]2=Var[X]
κ
3
=
E
[
X
3
]
−
3
E
[
X
]
E
[
X
2
]
+
2
E
[
X
]
3
\kappa_3 = \mathbb{E}[X^3] - 3\mathbb{E}[X]\mathbb{E}[X^2] + 2\mathbb{E}[X]^3
κ3=E[X3]−3E[X]E[X2]+2E[X]3
κ
4
=
E
[
X
4
]
−
4
E
[
X
]
E
[
X
3
]
−
3
E
[
X
2
]
2
+
12
E
[
X
]
2
E
[
X
2
]
−
6
E
[
X
]
4
\kappa_4 = \mathbb{E}[X^4] - 4\mathbb{E}[X]\mathbb{E}[X^3] - 3\mathbb{E}[X^2]^2 + 12\mathbb{E}[X]^2\mathbb{E}[X^2] - 6\mathbb{E}[X]^4
κ4=E[X4]−4E[X]E[X3]−3E[X2]2+12E[X]2E[X2]−6E[X]4
对于多维随机变量,累积量可以推广为张量。 n n n 阶累积量张量的元素为:
κ i 1 , i 2 , . . . , i n = ∂ n ∂ t i 1 ∂ t i 2 . . . ∂ t i n log Φ ( t ) ∣ t = 0 \kappa_{i_1,i_2,...,i_n} = \frac{\partial^n}{\partial t_{i_1}\partial t_{i_2}...\partial t_{i_n}}\log\Phi(\mathbf{t})|_{\mathbf{t}=\mathbf{0}} κi1,i2,...,in=∂ti1∂ti2...∂tin∂nlogΦ(t)∣t=0
其中 Φ ( t ) \Phi(\mathbf{t}) Φ(t) 是特征函数。高阶自相关函数定义为信号的高阶矩。对于信号 x ( t ) x(t) x(t),其 n n n 阶自相关函数为:
R n x ( τ 1 , τ 2 , . . . , τ n − 1 ) = E [ x ( t ) x ( t + τ 1 ) x ( t + τ 2 ) . . . x ( t + τ n − 1 ) ] R_n^x(\tau_1,\tau_2,...,\tau_{n-1}) = \mathbb{E}[x(t)x(t+\tau_1)x(t+\tau_2)...x(t+\tau_{n-1})] Rnx(τ1,τ2,...,τn−1)=E[x(t)x(t+τ1)x(t+τ2)...x(t+τn−1)]
相应的, n n n 阶累积量函数定义为:
C n x ( τ 1 , τ 2 , . . . , τ n − 1 ) = cum [ x ( t ) , x ( t + τ 1 ) , x ( t + τ 2 ) , . . . , x ( t + τ n − 1 ) ] C_n^x(\tau_1,\tau_2,...,\tau_{n-1}) = \text{cum}[x(t),x(t+\tau_1),x(t+\tau_2),...,x(t+\tau_{n-1})] Cnx(τ1,τ2,...,τn−1)=cum[x(t),x(t+τ1),x(t+τ2),...,x(t+τn−1)]
对于非高斯信号,高阶累积量不为零,包含了比二阶统计量更多的信息。基于高阶统计量的自相关滤波可以捕捉信号中的非线性相关性。非线性自相关滤波的一种形式是基于Volterra级数的滤波器,其输出可以表示为输入的非线性函数:
y ( t ) = h 0 + ∫ − ∞ ∞ h 1 ( τ 1 ) x ( t − τ 1 ) d τ 1 + ∫ − ∞ ∞ ∫ − ∞ ∞ h 2 ( τ 1 , τ 2 ) x ( t − τ 1 ) x ( t − τ 2 ) d τ 1 d τ 2 + . . . y(t) = h_0 + \int_{-\infty}^{\infty} h_1(\tau_1)x(t-\tau_1)d\tau_1 + \int_{-\infty}^{\infty}\int_{-\infty}^{\infty} h_2(\tau_1,\tau_2)x(t-\tau_1)x(t-\tau_2)d\tau_1d\tau_2 + ... y(t)=h0+∫−∞∞h1(τ1)x(t−τ1)dτ1+∫−∞∞∫−∞∞h2(τ1,τ2)x(t−τ1)x(t−τ2)dτ1dτ2+...
其中 h n ( τ 1 , τ 2 , . . . , τ n ) h_n(\tau_1,\tau_2,...,\tau_n) hn(τ1,τ2,...,τn) 是 n n n 阶Volterra核。对于离散信号:
y [ n ] = h 0 + ∑ k 1 = 0 N − 1 h 1 [ k 1 ] x [ n − k 1 ] + ∑ k 1 = 0 N − 1 ∑ k 2 = 0 N − 1 h 2 [ k 1 , k 2 ] x [ n − k 1 ] x [ n − k 2 ] + . . . y[n] = h_0 + \sum_{k_1=0}^{N-1} h_1[k_1]x[n-k_1] + \sum_{k_1=0}^{N-1}\sum_{k_2=0}^{N-1} h_2[k_1,k_2]x[n-k_1]x[n-k_2] + ... y[n]=h0+k1=0∑N−1h1[k1]x[n−k1]+k1=0∑N−1k2=0∑N−1h2[k1,k2]x[n−k1]x[n−k2]+...
Volterra滤波器的设计通常通过最小化均方误差来实现:
min h n E [ ∣ s [ n ] − y [ n ] ∣ 2 ] \min_{h_n} \mathbb{E}[|s[n] - y[n]|^2] hnminE[∣s[n]−y[n]∣2]
这导致了一组复杂的多维Wiener-Hopf方程。
另一种非线性方法是通过核函数将信号映射到高维特征空间,然后在该空间中应用线性滤波:
y [ n ] = ∑ k = 0 N − 1 α k K ( x [ n ] , x [ k ] ) y[n] = \sum_{k=0}^{N-1} \alpha_k K(x[n], x[k]) y[n]=k=0∑N−1αkK(x[n],x[k])
其中 K ( ⋅ , ⋅ ) K(\cdot,\cdot) K(⋅,⋅) 是核函数,如径向基函数(RBF)核:
K ( x i , x j ) = exp ( − ∥ x i − x j ∥ 2 2 σ 2 ) K(x_i, x_j) = \exp\left(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\right) K(xi,xj)=exp(−2σ2∥xi−xj∥2)
这种方法在处理高度非线性系统中特别有效。
自相关滤波的理论限制
自相关滤波虽然强大,但也存在理论限制。理解这些限制有助于正确应用该技术。首先,自相关函数只包含信号的二阶统计特性,对于非高斯过程,这是不完整的描述。信号的完整统计特性要通过高阶累积量或概率密度函数来表征。其次,自相关估计的精度受限于样本数量。对于长度为 N N N 的信号,自相关估计的方差近似为:
Var [ R ^ x x [ k ] ] ≈ 1 N ∑ m = − ( N − 1 ) N − 1 ( 1 − ∣ m ∣ N ) R x x 2 [ m ] \text{Var}[\hat{R}_{xx}[k]] \approx \frac{1}{N}\sum_{m=-(N-1)}^{N-1}(1-\frac{|m|}{N})R_{xx}^2[m] Var[R^xx[k]]≈N1m=−(N−1)∑N−1(1−N∣m∣)Rxx2[m]
这表明,即使对于白噪声,自相关估计的方差也不为零,特别是在延迟 k k k 较大时。
另一个限制是相位信息的丢失。自相关函数的傅里叶变换是功率谱密度,只包含幅度信息,而没有相位信息。这意味着自相关滤波无法完全重构原始信号,除非有额外的约束(如最小相位假设)。对于维纳滤波器,其性能受限于信噪比。当信噪比很低时,滤波器会大幅衰减信号以抑制噪声,导致过度平滑,丢失信号细节。最后,自相关滤波假设信号和噪声是相互正交的,即:
E [ s ( t ) w ( t + τ ) ] = 0 , ∀ τ \mathbb{E}[s(t)w(t+\tau)] = 0, \quad \forall \tau E[s(t)w(t+τ)]=0,∀τ
当这一假设不成立时,滤波性能会下降。
自相关滤波器的计算复杂度
实现自相关滤波时,计算复杂度是一个重要考虑因素。对于长度为 N N N 的信号,直接计算自相关函数的复杂度为 O ( N 2 ) O(N^2) O(N2):
R ^ x x [ k ] = 1 N − ∣ k ∣ ∑ n = 0 N − ∣ k ∣ − 1 x [ n ] x [ n + ∣ k ∣ ] , ∣ k ∣ < N \hat{R}_{xx}[k] = \frac{1}{N-|k|}\sum_{n=0}^{N-|k|-1}x[n]x[n+|k|], \quad |k| < N R^xx[k]=N−∣k∣1n=0∑N−∣k∣−1x[n]x[n+∣k∣],∣k∣<N
使用快速傅里叶变换(FFT)可以降低复杂度。根据维纳-辛钦定理,自相关函数可以通过功率谱密度的逆傅里叶变换计算:
R ^ x x [ k ] = F − 1 { ∣ F { x [ n ] } ∣ 2 } [ k ] \hat{R}_{xx}[k] = \mathcal{F}^{-1}\{|\mathcal{F}\{x[n]\}|^2\}[k] R^xx[k]=F−1{∣F{x[n]}∣2}[k]
这种方法的复杂度为 O ( N log N ) O(N \log N) O(NlogN),但可能引入周期性假设导致的边缘效应。对于大规模数据,可以使用分块处理或流处理技术。将信号分成长度为 L L L 的块,计算每个块的自相关函数,然后合并结果:
R ^ x x [ k ] = 1 M ∑ m = 0 M − 1 R ^ x x ( m ) [ k ] \hat{R}_{xx}[k] = \frac{1}{M}\sum_{m=0}^{M-1}\hat{R}_{xx}^{(m)}[k] R^xx[k]=M1m=0∑M−1R^xx(m)[k]
其中 M M M 是块的数量, R ^ x x ( m ) [ k ] \hat{R}_{xx}^{(m)}[k] R^xx(m)[k] 是第 m m m 个块的自相关估计。对于多维信号,计算复杂度更高。对于 d d d 维信号,每维长度为 N N N,直接计算自相关函数的复杂度为 O ( N 2 d ) O(N^{2d}) O(N2d),使用FFT可以降低到 O ( N d log N d ) O(N^d \log N^d) O(NdlogNd)。在实时应用中,递归计算自相关函数可以进一步减少计算量:
R ^ x x ( n ) [ k ] = α R ^ x x ( n − 1 ) [ k ] + ( 1 − α ) x [ n ] x [ n − k ] \hat{R}_{xx}^{(n)}[k] = \alpha \hat{R}_{xx}^{(n-1)}[k] + (1-\alpha)x[n]x[n-k] R^xx(n)[k]=αR^xx(n−1)[k]+(1−α)x[n]x[n−k]
其中 α \alpha α 是平滑因子, 0 < α < 1 0 < \alpha < 1 0<α<1。
频率域自相关滤波的高级分析
在频率域中,自相关滤波可以更深入地分析。对于有色噪声,预白化是一种重要的预处理技术。预白化滤波器的目标是将有色噪声转换为白噪声:
W ( f ) = 1 S w w ( f ) W(f) = \frac{1}{\sqrt{S_{ww}(f)}} W(f)=Sww(f)1
应用预白化滤波器后,信号的功率谱密度变为:
S y ′ ( f ) = ∣ W ( f ) ∣ 2 S y y ( f ) = S s s ( f ) + S w w ( f ) S w w ( f ) = S s s ( f ) S w w ( f ) + 1 S_{y'}(f) = |W(f)|^2 S_{yy}(f) = \frac{S_{ss}(f) + S_{ww}(f)}{S_{ww}(f)} = \frac{S_{ss}(f)}{S_{ww}(f)} + 1 Sy′(f)=∣W(f)∣2Syy(f)=Sww(f)Sss(f)+Sww(f)=Sww(f)Sss(f)+1
在预白化域中应用维纳滤波器:
H w i e n e r ′ ( f ) = S s s ( f ) S w w ( f ) S s s ( f ) S w w ( f ) + 1 = S s s ( f ) S s s ( f ) + S w w ( f ) H'_{wiener}(f) = \frac{\frac{S_{ss}(f)}{S_{ww}(f)}}{\frac{S_{ss}(f)}{S_{ww}(f)} + 1} = \frac{S_{ss}(f)}{S_{ss}(f) + S_{ww}(f)} Hwiener′(f)=Sww(f)Sss(f)+1Sww(f)Sss(f)=Sss(f)+Sww(f)Sss(f)
预白化和维纳滤波的组合等价于:
H t o t a l ( f ) = W ( f ) ⋅ H w i e n e r ′ ( f ) = S s s ( f ) S w w ( f ) ⋅ ( S s s ( f ) + S w w ( f ) ) H_{total}(f) = W(f) \cdot H'_{wiener}(f) = \frac{S_{ss}(f)}{S_{ww}(f) \cdot (S_{ss}(f) + S_{ww}(f))} Htotal(f)=W(f)⋅Hwiener′(f)=Sww(f)⋅(Sss(f)+Sww(f))Sss(f)
更一般地,我们可以定义频率域中的信噪比:
S N R ( f ) = S s s ( f ) S w w ( f ) SNR(f) = \frac{S_{ss}(f)}{S_{ww}(f)} SNR(f)=Sww(f)Sss(f)
维纳滤波器可以表示为SNR的函数:
H w i e n e r ( f ) = S N R ( f ) S N R ( f ) + 1 H_{wiener}(f) = \frac{SNR(f)}{SNR(f) + 1} Hwiener(f)=SNR(f)+1SNR(f)
当 S N R ( f ) ≫ 1 SNR(f) \gg 1 SNR(f)≫1 时, H w i e n e r ( f ) ≈ 1 H_{wiener}(f) \approx 1 Hwiener(f)≈1;当 S N R ( f ) ≪ 1 SNR(f) \ll 1 SNR(f)≪1 时, H w i e n e r ( f ) ≈ S N R ( f ) H_{wiener}(f) \approx SNR(f) Hwiener(f)≈SNR(f)。
维纳滤波器最小化的均方误差可以表示为:
M S E = ∫ − ∞ ∞ S s s ( f ) ⋅ S w w ( f ) S s s ( f ) + S w w ( f ) d f = ∫ − ∞ ∞ S s s ( f ) S N R ( f ) + 1 d f MSE = \int_{-\infty}^{\infty} \frac{S_{ss}(f) \cdot S_{ww}(f)}{S_{ss}(f) + S_{ww}(f)} df = \int_{-\infty}^{\infty} \frac{S_{ss}(f)}{SNR(f) + 1} df MSE=∫−∞∞Sss(f)+Sww(f)Sss(f)⋅Sww(f)df=∫−∞∞SNR(f)+1Sss(f)df
这个表达式显示了滤波误差与信噪比的关系:在信噪比高的频带,误差小;在信噪比低的频带,误差接近信号功率。对于正则化维纳滤波,引入一个正则化参数 γ \gamma γ:
H r e g ( f ) = S s s ( f ) S s s ( f ) + S w w ( f ) + γ H_{reg}(f) = \frac{S_{ss}(f)}{S_{ss}(f) + S_{ww}(f) + \gamma} Hreg(f)=Sss(f)+Sww(f)+γSss(f)
这等价于向噪声谱中添加一个常数项,可以防止在低信噪比区域滤波器增益过大,提高数值稳定性。