1
$\begingroup$

I need to smooth noisy complex data with a Gaussian filter.

Right now, I apply the filter to real and imaginary part of the data separately, which needs two convolutions. The intended results are the equally smoothed components of the array.

In order to reduce computational load, would it be possible to filter the complex array as a whole and take real and imaginary part after smoothing?

$\endgroup$
0
$\begingroup$

If you filter complex data $x[n]$ with a filter with a real-valued impulse response $h[n]$, your complex-valued output is given by the convolution sum

$$y[n]=\sum_kx[k]h[n-k]\tag{1}$$

The real and imaginary parts are

$$y_R[n]=\sum_kx_R[k]h[n-k]\tag{2}$$

and

$$y_I[n]=\sum_kx_I[k]h[n-k]\tag{3}$$

So whatever you do, in order to compute the complex-valued output $y[n]$ you need to perform two real-valued convolutions / filtering operations.

$\endgroup$
  • $\begingroup$ Thanks for the quick answer. I guess there's no way around this? Some Fourier domain magic? $\endgroup$ – Zac Diggum Jun 14 '16 at 16:25
  • $\begingroup$ @ZacDiggum: No magic, I'm afraid. $\endgroup$ – Matt L. Jun 14 '16 at 16:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.