|
The Wiener filter is a filter proposed by Norbert Wiener during the 1940s and published [1].
Description
Unlike the typical filtering theory of designing a filter for a desired frequency response the Wiener filter approaches filtering from a different angle. By creating a filter that filters only on the frequency domain it is possible for the filter to pass noise. Wiener's solution was to require additional information regarding the spectral content of the original signal and the noise. Wiener filters are characterized by the following [2]:
- Assumption: signal and (additive) noise are stochastic processes with known spectral characteristics or known autocorrelation and cross-correlation
- Performance criteria: minimum mean-square error
- An optimal filter can be found from a solution based on scalar methods
The goal of the Wiener filter is to filter out noise that has corrupted a signal by statistical means.
Model/problem setup
The input to the Wiener filter is assumed to be additive noise. That is <math>x(t) = s(t) + n(t)<math> where
- <math>s(t)<math> is the original signal
- <math>n(t)<math> is the noise
- <math>x(t)<math> is the corrupted signal
The error is <math>e(t) = s(t + d) - x(t)<math> and the squared error is <math>e^2(t) = s^2(t + d) - 2s(t + d)x(t) + x^2(t)<math> where
- <math>s(t + d)<math> is the desired output of the filter
- <math>e(t)<math> is the error
Depending on the value of d the problem name can be changed:
- If <math>d > 0<math> then the problem is that of prediction
- If <math>d = 0<math> then the problem is that of filtering
- If <math>d < 0<math> then the problem is that of smoothing
Writing <math>x(t)<math> as a convolution integral: <math>x(t) = \int_{-\infty}^{\infty}{g(\tau)\left[s(t - \tau) + n(t - \tau)\right]d\tau}<math>.
Taking the expectation of the squared error results in
- <math>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}<math>
where
- <math>\,\!R_s<math> is the autocorrelation function of <math>s(t)<math>
- <math>\,\!R_x<math> is the autocorrelation function of <math>x(t)<math>
- <math>R_{x\,s}<math> is the cross-correlation function of <math>x(t)<math> and <math>s(t)<math>
If the signal <math>s(t)<math> and the noise <math>n(t)<math> are uncorrelated (i.e., the cross-correlation is zero) then note the following
- <math>R_{x\,s} = R_s<math>
- <math>\,\!R_x = R_s + R_n<math>
The goal is to then minimize <math>E(e^2)<math> by finding the optimal <math>g(t)<math>.
Stationary solution
The Wiener filter has two solutions for two possible cases: causal and anticausal.
Anticausal solution
- <math>G(s) = \frac{S_{x,s}(s)e^{\alpha s}}{S_x(s)}<math>
Provided that <math>g(t)<math> is optimal then the mmse equation reduces to <math>E(e^2) = R_s(0) - \int_{-\infty}^{\infty}{g(\tau)R_{x,s}(\tau + d)d\tau}<math>
And the solution, <math>g(t)<math> is the inverse two-sided Laplace transform of <math>G(s)<math>.
Causal solution
- <math>G(s) = \frac{H(s)}{S_x^{+}(s)}<math>
Where
- <math>H(s)<math> is the positive time solution of the inverse Laplace transform of <math>\frac{S_{x,s}(s)e^{\alpha s}}{S_x^{-}(s)}<math>
- <math>S_x^{+}(s)<math> is the positive time solution of the inverse Laplace transform of <math>S_x(s)<math>
- <math>S_x^{-}(s)<math> is the negative time solution of the inverse Laplace transform of <math>S_x(s)<math>
Non-stationary solution
See also
References
- [1]: Wiener, Norbert. Extrapolation, Interpolation, and Smoothing of Stationary Time Series. New Yokr: Wiley, 1949.
- [2]: Brown, Robert Grover and Patrick Y.C. Hwang. Introduction to Random Signals and Applied Kalman Filtering. 3 ed. New York: John Wiley & Sons. 1997
|