How to do smoothing without affecting phase I have signals captured from two channels of a measurement system. There is phase and magnitude differences between these two signals. 

I want to apply nonlinear smoothing to the magnitude, but the phases should remain the same after the process.

This is what I have done both channels:


Perform FFT
calculate magnitude
calculate phase
apply nonlinear smoothing to the magnitude
get real and imaginary part from smoothed magnitude and phase
perform inverse FFT.


However the resultant signal is not as desired. It appears as a two sided time signal or has some additional signals in the end.

Is there a solution to this problem?
Any smoothing in the frequency domain is similar to convolution filtering.  And convolution filtering (with anything other an impulse or zero) will spread the width of a signal.

If you want a real result, you may need to check to make sure the input to your IFFT is conjugate symmetric.

If you don't want any phase shift, you could try copying the phase from before your filter into the result after your filtering and before the IFFT.