I am trying to understand how exactly to implement what is known as a 'pre-whitening' filter or simply a 'whitening' filter.
I understand that the purpose is to make it have a delta as its autocorrelation function, but I am not sure how to do this exactly.
The context here is the following: A signal is received at two different receivers, and their cross-correlation is computed. The cross-correlation can look like a triangle, or some other godforsaken shape. Due to this, it becomes hard to find the peak of the cross-correlation signal. In this case I hear about having to 'whiten' the signals before a cross correlation is performed on them, such that the cross-correlation is now more delta-like.
How is this done?
Thanks!
Answer
Suppose you have signals $x(t)$ and $y(t)$ whose cross-correlation function $R_{x,y}(t)$ is not something you like; you want $R_{x,y}$ to be impulse-like. Note that in the frequency domain, $$\mathcal{F}[R_{x,y}] = S_{x,y}(f) = X(f)Y^*(f).$$ So you filter the signals through linear filters $g$ and $h$ respectively to get $\hat{x}(t) = x*g$, $\hat{X}(f) = X(f)G(f)$, and $\hat{y} = y*h$, $\hat{Y}(f) = Y(f)H(f)$, and now their cross-correlation function is $R_{\hat{x},\hat{y}}$ whose Fourier transform is $$\begin{align*} \mathcal{F}[R_{\hat{x},\hat{y}}] = S_{\hat{x},\hat{y}}(f) &= [X(f)G(f)][Y(f)H(f)]^*\\ &= [X(f)Y^*(f)][G(f)H^*(f)]\\ &= [X(f)Y^*(f)][G^*(f)H(f)]^*, \end{align*}$$ that is, $R_{\hat{x},\hat{y}}$ is the cross-correlation of $R_{x,y}$ with $R_{h,g}$. More importantly, you want to choose $g$ and $h$ so that the cross-spectral density $G(f)H^*(f)$ of $g$ and $h$ is the multiplicative inverse of the cross-spectral density $X(f)Y^*(f)$ of $x$ and $y$, or something close to it. If you have only one signal and one filter, then you get the result given by Hilmar (with amendment as given by my comment there). In either case, the issue of compensating for spectral nulls, or generally, frequency bands where the signals have little energy still remains.
No comments:
Post a Comment