Asked by Abdelrahman Marconi
on 12 Jan 2013

hi all I'm using the functions(fft,ifft) in a matlab code,theoretically signal power must not be changed before and after transformation according to Parsaval theorem. But when calculating the signal power before and after using E{X^2},the power of the 2 signals aren't the same. please can any body helping solving this issue. Thanks

Answer by Wayne King
on 12 Jan 2013

Accepted Answer

I'm surprised that you have a signal where you take the DFT, then you take the inverse DFT and the l2 norms are different, can you show this?

If you mean that the l2 norms are different in the time and Fourier domains, then that is expected.The way the DFT and inverse DFT are implemented in MATLAB and many other software packages, the DFT is NOT a unitary operator. You are missing a factor

x = randn(32,1); % now compute the l2 norm in time norm(x,2)^2 % take the Fourier transform xdft = fft(x); % divide by the appropriate factor norm(xdft./sqrt(length(x)),2)^2

But again, if you are saying that the following results in a difference, I'm very surprised

x = randn(32,1); norm(x,2)^2 xdft = fft(x); xhat = ifft(xdft); norm(xhat,2)^2

Log in to comment.

Answer by Abdelrahman Marconi
on 12 Jan 2013

Dear Wayne King ,i really appreciate your answer, it is very useful. but please try the same code with (ifft only) the power of the signal before and after aren't the same Thank you

Wayne King
on 12 Jan 2013

See my comment below and the following:

x = randn(32,1); norm(x,2)^2 xdft = ifft(x); norm(sqrt(length(x)).*xdft,2)^2

Log in to comment.

Answer by Abdelrahman Marconi
on 12 Jan 2013

please try this code { x = randn(32,1); % now compute the l2 norm in time a=norm(x,2)^2 % take the Fourier transform xdft = ifft(x); % divide by the appropriate factor b=norm(xdft./sqrt(length(x)),2)^2 } a and b aren't the same

Wayne King
on 12 Jan 2013

That's because if you are using ifft() (and I'm not sure why you are with a time signal), then the factor is multiplicative

x = randn(32,1); norm(x,2)^2 xdft = ifft(x); norm(sqrt(length(x)).*xdft,2)^2

Abdelrahman Marconi
on 12 Jan 2013

Log in to comment.

Answer by Abdelrahman Marconi
on 12 Jan 2013

Thank you very much it is very helpful answer.

mohammadreza
on 28 May 2015

Log in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Log in to comment.