维纳滤波

维纳滤波器（Wiener filter）是由美国数学家诺伯特·维纳（Norbert Wiener）于1940年代提出，并于1949年首次正式发表的一种线性滤波技术。它的设计目标是在最小均方误差的准则下，从被噪声干扰的观测讯号中，恢复出原始讯号。此滤波器的核心假设包括：讯号与噪声皆为平稳随机过程，并且其统计特性（如相关函数与功率谱）已被确定。基于这些假设，维纳滤波器透过统计优化，使得滤波后讯号与真实讯号之间的平均平方差达到最小。

与理想化的通阻型滤波器（如低通、高通、带通或带阻）不同，维纳滤波器会根据讯号与噪声的统计特性，动态调整对各频段的保留或抑制程度。它具有两种形式：

- 非因果版本：可以利用未来资讯来达成最佳去噪效果，但不适用于即时系统。
- 因果版本：只使用当前与过去资料，以适应即时处理需求，但推导上更为复杂。

维纳滤波器广泛应用于音讯降噪、影像复原、通讯无线通道均衡等领域；同时也成为多种自适应滤波算法如 LMS、RLS 及卡尔曼滤波器的重要理论基石。

## 描述

维纳滤波器的理论基础可追溯至维纳与霍夫（Norbert Wiener and Eberhard Hopf）对随机讯号估计问题的研究，其推导出的维纳–霍夫方程提供了解析解，使得在理想条件下可以精确求出滤波器的脉冲响应或系数。在离散时间域中，维纳滤波器可以实作为有限长度（FIR）或无限长度（IIR）形式；而若进一步要求因果性，则必须透过频谱因式分解处理，以确保滤波器可以即时实作。

与传统设计为低通、高通、带通等类型的频率选择性滤波器不同，维纳滤波器不单以频率为设计依据，而是依据输入讯号与期望输出的统计特性，于各频段进行权重调整。其在频域上的滤波器传输函数通常具有非零相位响应，这表示它可能会改变讯号的波形结构，但可保证输出在统计意义下最接近目标讯号。

为解决实务中无法事先得知讯号与噪声统计特性的限制，维纳滤波器衍生出一系列自适应滤波方法，像是最小均方（LMS）与递回最小平方（RLS）算法。这些方法可在线估测滤波系数，使滤波器能够追踪动态环境变化而维持近似最小均方误差的性能。

除了用于一维讯号的去噪声，维纳滤波技术也已扩展至多维资料，例如影像处理中的降噪与去模糊。这类应用中，空间域与频域的维纳滤波器皆可使用，并可根据局部统计特性调整滤波强度，达到空间自适应的效果。

维纳滤波器提供了一种将统计估计与线性系统设计结合的方式，并开启了数字信号处理中以几率模型为基础的滤波方法发展，其理论影响深远，至今仍是统计讯号处理与通讯系统中的重要工具。

## 模型/问题的建立

假设维纳滤波器的输入信号是$s (t)$，叠加噪声$n (t)$。输出信号$x (t)$通过滤波器$g (t)$使用下面的卷积运算得到：

$$x (t) = g (t) *(s(t) + n (t))$$

其中

- $s (t)$是需要估计的原始信号
- $n (t)$是噪声
- $x (t)$是估计出的信号（我们希望它能等同于$s (t)$)
- $g (t)$是维纳滤波器

误差是$e (t) = s(t + d) - x (t)$，方差是$e^2 (t) = s^2(t + d) - 2s(t + d)x (t) + x^2 (t)$其中

- $s(t + d)$是所期望的滤波器输出
- $e (t)$是误差

根据d的不同，问题名称可以更换为：

- 如果$d > 0$那么问题是预测
- 如果$d = 0$那么问题是滤波
- 如果$d < 0$那么问题是平滑

将$x (t)$写成卷积积分：$x (t) = \int_{-\infty}^{\infty}{g(\tau)\left[s(t - \tau) + n(t - \tau)\right]d\tau}$.

计算平方误差的均值，可得

$$E(e^2) = R_s (0) - 2\int_{-\infty}^{\infty}{g(\tau)R_{x\,s}(\tau + d)d\tau} + \int_{-\infty}^{\infty}{\int_{-\infty}^{\infty}{g(\tau)g(\theta)R_x(\tau - \theta)d\tau}d\theta}$$

其中

- $\,\!R_s$是$s (t)$的自相关函数
- $\,\!R_x$是$x (t)$的自相关函数
- $R_{x\,s}$是$x (t)$和$s (t)$的互相关函数

如果信号$s (t)$和噪声$n (t)$是不相关的（例如，互相关是0）那么请注意

- $$R_{x\,s} = R_s$$
- $$\,\!R_x = R_s + R_n$$

这个的目的是求最优的$g (t)$，使得$E(e^2)$最小。

## 稳态解（Stationary solution）

维纳滤波对于因果系统与非因果系统有两种不同解，如下：

### 非因果解（Anticausal solution)

$$G (s) = \frac{S_{x,s}(s)e^{\alpha s}}{S_x (s)}$$

其中$S$ 是谱函数。

只要$g (t)$是最优的，那么最小均方误差公式简化为$E(e^2) = R_s (0) - \int_{-\infty}^{\infty}{g(\tau)R_{x,s}(\tau + d)d\tau}$

那么方程的解$g (t)$就是$G (s)$的双边拉普拉斯变换逆变换（inverse two-sided Laplace transform）。

### 因果解（Causal solution)

$$G (s) = \frac{H (s)}{S_x^{+}(s)}$$

其中

- $H (s)$是$\frac{S_{x,s}(s)e^{\alpha s}}{S_x^{-}(s)}$的拉普拉斯逆变换positive time解
- $S_x^{+}(s)$是$S_x (s)$的拉普拉斯逆变换positive time解
- $S_x^{-}(s)$是$S_x (s)$的拉普拉斯逆变换negative time解

## 离散序列的有限冲激响应维纳滤波器

<image>

因果的有限冲激响应（FIR）维纳滤波器通过使用输入和输出信号的统计信息，而不是使用一些给定的数据矩阵X和输出矢量Y，来发现最佳的抽头权重。它将输入信号的自相关的估计（T）代入输入矩阵X，将输出和输入信号的互相关估计（V）代入的输出向量Y。

为了获得维纳滤波系数，考虑将信号wn输入到一个N阶维纳滤波器，系数$\{a_i\}$, $i \,=\, 0,\, \ldots,\, N$，N的滤波器的输出被记作xn，这是由下式给出

$x[n] = \sum_{i=0}^N a_i w[n-i]$。

剩余误差来表示en的，被定义为en = xn − sn（参见相应的框图）。维纳滤波器被设计成最小化均方误差（MMSE准则），它可以如下简而言之：

$a_i = \arg \min ~E\{e^2[n]\}$。

$E\{\cdot\}$表示期望算子。在一般情况下，系数$a_i$可能是复数，在wn的和sn是复数的情况下可能推导出。对于复信号，待求解矩阵是一个共轭对称Toeplitz矩阵，而不是对称Toeplitz矩阵。为简单起见，下面只考虑所有这些量实数的情况。均方误差（MSE）可改写为：

$$\begin{array}{rcl} E\{e^2[n]\} &=& E\{(x[n]-s[n])^2\}\\ &=& E\{x^2[n]\} + E\{s^2[n]\} - 2E\{x[n]s[n]\}\\ &=& E\{\big(\sum_{i=0}^N a_i w[n-i] \big)^2\} + E\{s^2[n]\} - 2E\{\sum_{i=0}^N a_i w[n-i]s[n]\} . \end{array}$$

矢量$[a_0,\, \ldots,\, a_N]$减少上面的表达式，计算其关于$a_i$的导数

$$\begin{array}{rcl} \frac{\partial}{\partial a_i} E\{e^2[n]\} &=& 2E\{ \big( \sum_{j=0}^N a_j w[n-j] \big) w[n-i] \} - 2E\{s[n]w[n-i]\} \quad i=0,\, \ldots,\, N\\ &=& 2 \sum_{j=0}^N E\{w[n-j]w[n-i]\} a_j - 2E\{ w[n-i]s[n]\} . \end{array}$$

假设，$w[n]$和$s[n]$均为平稳和联合平稳，记序列$R_w[m]$和$R_{ws}[m]$为$w[n]$的自相关和$w[n]$和$s[n]$之间的互相关，定义如下：

$$\begin{align} R_w[m] =& E\{w[n]w[n+m]\} \\ R_{ws}[m] =& E\{w[n]s[n+m]\} . \end{align}$$

因此，注意到$R_{ws}[-i] \,=\, R_{sw}[i]$，导数的MSE可以改写为

$\frac{\partial}{\partial a_i} E\{e^2[n]\} = 2 \sum_{j=0}^{N} R_w[j-i] a_j - 2 R_{sw}[i] \quad i = 0,\, \ldots,\, N$.

令该导数等于零，得到

$\sum_{j=0}^N R_w[j-i] a_j = R_{sw}[i] \quad i = 0,\, \ldots,\, N$。

上式可以改写为矩阵形式

$$\begin{align} &\mathbf{T}\mathbf{a} = \mathbf{v}\\ \Rightarrow &\begin{bmatrix} R_w[0] & R_w[1] & \cdots & R_w[N] \\ R_w[1] & R_w[0] & \cdots & R_w[N-1] \\ \vdots & \vdots & \ddots & \vdots \\ R_w[N] & R_w[N-1] & \cdots & R_w[0] \end{bmatrix} \begin{bmatrix} a_0 \\ a_1 \\ \vdots \\ a_N \end{bmatrix} = \begin{bmatrix} R_{ws}[0] \\R_{ws}[1] \\ \vdots \\ R_{ws}[N] \end{bmatrix} \end{align}$$

这些方程被称作Wiener-Hopf方程。出现在方程中的矩阵T是一个对称的Toeplitz矩阵。当$R$在适当条件下，这些矩阵是正定的，也就是非奇异的，从而使得有唯一解来确定维纳滤波器系数矢量，$\mathbf{a} \,=\, \mathbf{T}^{-1}\mathbf{v}$。此外，Wiener-Hopf方程存在一个求解的有效算法，称为Levinson-Durbin算法，因此并不需要对矩阵$\mathbf{T}$的显式求逆。

## 维纳滤波器的优缺点

维纳滤波器的设计优势在于：它能以最小化均方误差（MSE）为目标，达成线性估计的最优效果，这使其在理想统计条件下（讯号与噪声的功率谱已知）能充分发挥精准去噪与讯号恢复性能；此外，在某些案例中，滤波器系数可以求得封闭形式解，因此能利用简单的物理元件（RC、LC网络）加以实现。因其理论明确、可计算性高，维纳滤波常成为后续 LMS、RLS 及卡尔曼滤波自适应方法的基础。

然而，其实务上的限制也不容忽视：首先，在真实环境中精确获得信号和噪声的功率频谱或自相关函数十分困难，尤其在非平稳或时变噪声条件下更难以估计到位；其次，维纳滤波为线性方法，这意味其无法处理非线性现象（如讯号高次谐波、混叠），可能导致滤波后结果出现模糊、振铃（ringing）等失真现象；第三，设计 FIR 或 IIR 滤波器时需要进行矩阵反演或频谱因式分解，对计算能力要求较高，尤其在高维或大规模案例中亦不易即时实现。

此外，在应用中也遇到频率分布重叠与生态噪声模式的挑战，维纳滤波解对小幅频谱估计误差通常十分敏感，实务效能可能因此明显下降。而且在一些影像去模糊案例中，若参数估计不精准，更可能导致“过度钝化”（over-smoothing）或不必要的边缘损失。

综上所述，尽管维纳滤波在统计理论上具备无可匹敌的最佳特性，但其使用条件限制（已知统计特性、线性假设、计算开销）与对估计误差敏感性，使其在较复杂或动态环境中常被替代或与其他自适应、非线性技术（如 LMS、卡尔曼或小波滤波）结合使用，以求更稳健且实用的处理效果。

## 参见

- 诺伯特·维纳（Norbert Wiener）
- 卡尔曼滤波

## 参考书目

- Wiener19491: Wiener, Norbert (1949), Extrapolation, Interpolation, and Smoothing of Stationary Time Series. New York: Wiley. ISBN 0-262-73005-7
- Brown19962: Brown, Robert Grover and Patrick Y.C. Hwang (1996) Introduction to Random Signals and Applied Kalman Filtering. 3 ed. New York: John Wiley & Sons. ISBN 0-471-12839-2
- Gershenfeld19993: Neil Gershenfeld, The Nature of Mathematical Modeling, Cambridge University Press, 1999