The Wiener Filter

Estimating a Signal from Noisy Observations

The matched filter answers the question: "Is the signal there?" Now we ask a different question: "What is the signal?" Given a noisy observation Y(t)=X(t)+N(t)Y(t) = X(t) + N(t), where X(t)X(t) is a WSS signal process and N(t)N(t) is noise, we want to design an LTI filter that produces the best estimate of X(t)X(t) in the minimum mean-square error (MMSE) sense. This is the Wiener filter β€” the frequency-domain solution to the LMMSE estimation problem for stationary processes. The result is elegant: the optimal filter simply weights each frequency by the fraction of total power at that frequency that comes from the signal.

,

Definition:

The Wiener Filtering Problem

Let Y(t)=X(t)+N(t)Y(t) = X(t) + N(t), where X(t)X(t) and N(t)N(t) are jointly WSS, zero-mean processes that are uncorrelated: rxn(Ο„)=0r_{xn}(\tau) = 0 for all Ο„\tau. The Wiener filtering problem is to find the LTI filter h(t)h(t) that minimizes the mean-square error MSE=E ⁣[∣X(t)βˆ’X^(t)∣2],\text{MSE} = \mathbb{E}\!\left[|X(t) - \hat{X}(t)|^2\right], where X^(t)=(hβˆ—Y)(t)=∫h(Ο„)Y(tβˆ’Ο„) dΟ„\hat{X}(t) = (h * Y)(t) = \int h(\tau) Y(t - \tau)\, d\tau is the filtered estimate.

Theorem: The Wiener-Hopf Equation

The optimal (non-causal) Wiener filter satisfies the Wiener-Hopf equation in the time domain: rxy(Ο„)=βˆ«βˆ’βˆžβˆžhopt(Ξ±) ryy(Ο„βˆ’Ξ±) dΞ±=hopt(Ο„)βˆ—ryy(Ο„),r_{xy}(\tau) = \int_{-\infty}^{\infty} h_{\text{opt}}(\alpha)\, r_{yy}(\tau - \alpha)\, d\alpha = h_{\text{opt}}(\tau) * r_{yy}(\tau), or equivalently, rxy(Ο„)=hoptβˆ—ryy(Ο„)r_{xy}(\tau) = h_{\text{opt}} * r_{yy}(\tau) for all Ο„\tau.

This is the orthogonality principle in disguise: the estimation error X(t)βˆ’X^(t)X(t) - \hat{X}(t) must be orthogonal to the observation Y(s)Y(s) for all ss. Writing out this orthogonality condition gives a convolution equation relating the optimal filter to the input and cross-correlation functions.

,

Theorem: The Non-Causal Wiener Filter

For the signal-plus-noise model Y(t)=X(t)+N(t)Y(t) = X(t) + N(t) with XX and NN uncorrelated WSS processes, the non-causal Wiener filter has frequency response hΛ‡opt(f)=Px(f)Px(f)+PN(f),\boxed{\check{h}_{\text{opt}}(f) = \frac{P_x(f)}{P_x(f) + P_N(f)},} where Px(f)P_x(f) is the signal PSD and PN(f)P_N(f) is the noise PSD. The minimum MSE is MMSE=βˆ«βˆ’βˆžβˆžPx(f) PN(f)Px(f)+PN(f) df.\text{MMSE} = \int_{-\infty}^{\infty} \frac{P_x(f)\, P_N(f)}{P_x(f) + P_N(f)}\, df.

At each frequency, the Wiener filter computes a weight equal to the fraction of total power contributed by the signal. Where SNR(f)=Px(f)/PN(f)≫1\text{SNR}(f) = P_x(f)/P_N(f) \gg 1, the filter passes that frequency almost unchanged (hΛ‡β‰ˆ1\check{h} \approx 1). Where SNR(f)β‰ͺ1\text{SNR}(f) \ll 1, the filter suppresses that frequency (hΛ‡β‰ˆ0\check{h} \approx 0). The Wiener filter is the optimal frequency-by-frequency tradeoff between signal distortion and noise suppression.

, ,

Example: Wiener Filter for Signal in White Noise

A WSS signal X(t)X(t) with PSD Px(f)=A1+(f/f0)2P_x(f) = \frac{A}{1 + (f/f_0)^2} (Lorentzian spectrum) is observed in additive white noise with PSD PN(f)=N0/2P_N(f) = N_0/2. Find the Wiener filter frequency response and the MMSE.

Example: Discrete-Time Wiener Filter for AR(1) Signal

An AR(1) signal Xn=aXnβˆ’1+WnX_n = a X_{n-1} + W_n with ∣a∣<1|a| < 1 and ΟƒW2=1\sigma^2_{W} = 1 is observed in additive white noise: Yn=Xn+VnY_n = X_n + V_n with ΟƒV2=Οƒv2\sigma^2_{V} = \sigma_v^2. Find the DT Wiener filter.

Wiener Filter Frequency Response vs. SNR

Explore how the Wiener filter hˇopt(f)=Px(f)/(Px(f)+PN(f))\check{h}_{\text{opt}}(f) = P_x(f)/(P_x(f) + P_N(f)) adapts to the signal-to-noise ratio at each frequency. Adjust the signal and noise PSDs to see the filter shape change.

Parameters
3
0.5
2

Wiener Denoising: Before and After

See the Wiener filter in action. A realization of a WSS signal is corrupted by noise, and the Wiener filter extracts the signal estimate. Compare input and output in both time and frequency domains.

Parameters
10
2
42

Matched Filter vs. Wiener Filter

PropertyMatched FilterWiener Filter
GoalMaximize output SNR at one instantMinimize MSE of signal estimate
Signal modelKnown deterministic s(t)s(t)WSS random process X(t)X(t)
NoiseWhite (PSD N0/2N_0/2)Any WSS noise N(t)N(t)
Optimal hΛ‡(f)\check{h}(f)sΛ‡βˆ—(f)eβˆ’j2pift0\check{s}^*(f) e^{-j2\\pi f t_0}ΒΆx(f)/(ΒΆx(f)+PN(f))\P_x(f) / (\P_x(f) + P_N(f))
Performance metrictextSNRmax=2Es/N0\\text{SNR}_{\\max} = 2E_s/\N_0textMMSE=intfracΒΆxPNΒΆx+PN,df\\text{MMSE} = \\int \\frac{\P_x P_N}{\P_x + P_N}\\, df
Uses signal shape?Yes (explicitly)Only through PSD
ApplicationRadar, digital communicationsSpeech enhancement, channel estimation

Quick Check

As the noise PSD PN(f)β†’0P_N(f) \to 0 at all frequencies, what does the Wiener filter converge to?

The identity filter hˇ(f)=1\check{h}(f) = 1

The matched filter

Zero (suppress everything)

Quick Check

The Wiener filter for a narrowband signal in broadband noise has frequency response that is approximately:

A bandpass filter matching the signal bandwidth

An allpass filter

A notch filter at the signal frequency

πŸ”§Engineering Note

Wiener Filtering in Speech Enhancement

The Wiener filter is the workhorse of noise suppression in speech processing. In practice, the signal and noise PSDs are estimated from the data (e.g., using voice activity detection to identify noise-only frames). The short-time Fourier transform (STFT) provides a time-varying spectral estimate, and the Wiener filter is applied independently to each frequency bin. This simple approach β€” estimate Px(f)P_x(f) and PN(f)P_N(f), then multiply by Px/(Px+PN)P_x/({P_x + P_N}) β€” remains competitive with far more complex algorithms.

Practical Constraints
  • β€’

    PSD estimation errors cause 'musical noise' artifacts

  • β€’

    Non-stationary noise requires adaptive PSD tracking

πŸŽ“CommIT Contribution(2018)

LMMSE Channel Estimation for Massive MIMO

G. Caire, K. Vu, R. Cavalcante β€” IEEE Transactions on Signal Processing

The Wiener filter principle extends directly to MIMO channel estimation. When the channel vector has spatial covariance Rh\mathbf{R}_h and the observations are corrupted by white noise of power Οƒ2\sigma^2, the LMMSE estimator is h^=Rh(Rh+Οƒ2I)βˆ’1y\hat{\mathbf{h}} = \mathbf{R}_h (\mathbf{R}_h + \sigma^2 \mathbf{I})^{-1} \mathbf{y}, which is the matrix analogue of the scalar Wiener filter Px/(Px+PN)P_x/(P_x + P_N). This work by the CommIT group showed how to exploit spatial covariance structure to dramatically improve channel estimation in massive MIMO systems, reducing pilot overhead and improving spectral efficiency.

LMMSEmassive-MIMOchannel-estimation

Wiener Filter

The LMMSE-optimal LTI filter for estimating a WSS signal from noisy observations. For signal-plus-noise with uncorrelated components, the frequency response is hˇopt(f)=Px(f)/(Px(f)+PN(f))\check{h}_{\text{opt}}(f) = P_x(f)/(P_x(f) + P_N(f)).

Related: Matched Filter

Key Takeaway

The non-causal Wiener filter hΛ‡opt(f)=Px(f)/(Px(f)+PN(f))\check{h}_{\text{opt}}(f) = P_x(f)/(P_x(f) + P_N(f)) is the LMMSE-optimal LTI filter for extracting a WSS signal from additive uncorrelated noise. It weights each frequency by the local signal-to-noise ratio, automatically adapting its bandwidth to the noise level. The MMSE is ∫Px(f)PN(f)/(Px(f)+PN(f)) df\int P_x(f) P_N(f) / (P_x(f) + P_N(f))\, df.