# Smoothing complex data by convolution

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?

## 1 Answer

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.

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