3
$\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$

1 Answer 1

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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