# zero-phasing frequency components while keeping the same magnitude, in Matlab

How is it possible?

I was thinking of taking just the real part of the DFT of my signal (isn't that zeroing out phases?) with

real(fft(X))


but the magnitudes of that result don't match :

abs(real(fft(X))) != abs(fft(X))


• The magnitude is the sqrt(rere + imim). If the phase isn't zero to start with, the real part will be different from the magnitude, so, of course, they won't match. Commented Jun 27, 2015 at 18:02
• you are right hotpaw2, come to think of it I'll remove the question since it's a naive one Commented Jun 27, 2015 at 18:12

it is obvious that abs(real(fft(x)))!=abs(fft(x)) since you are removing the imaginary part while taking the real function.One way if you want a signal with all dft components being real.Is to normal to just take abs(fft(x)) as the spectrum itself rather than taking the real components.In this you maintain the magnitude and all the components have zero phase.I hope this answers your question

• thank you Vinith that was it, right before my eyes but couldn't see it :) Commented Jun 27, 2015 at 18:10