0
votes

I know by theory that the energy spectrum of a given signal is the sum of the squared fourier coefficient.

What if I have the real and imaginary part of the corresponding fourier coefficient, can I say that energy spectrum of a given signal is equal to sum of (real part + imaginary part)^2

2
you probably need to take the sum of absolute value square of the coefficient, i.e. \sum_i |fourier_coefficient_i|^2. However, afaik, the Fourier coefficients of a signal give you the energy density at that frequency (i.e. the spectral density over the energy domain), and summing their absolute value give you, by Parseval's theorem, the total energy.vsoftco
I'm voting to close this question as off-topic because belongs on math.stackexchange.comuser41871
I'm voting to close this question as off-topic because this is math, not programming. Furthermore, OP's definitions are questionable to plain wrong.Marcus Müller

2 Answers

1
votes

Not quite. You want:

sum of fft_result_magnitudes^2

which is:

sum of (sqrt(real_part^2 + imaginary_part^2)^2

which is:

sum of (real_part^2 + imaginary_part^2)

to get the sum of the squared magnitude of a complex FFT's results.

As for a fuller statement of Parseval's theorem, see:

http://en.wikipedia.org/wiki/Parseval%27s_theorem

0
votes

If result is a column vector with N elements, the energy spectrum is also a vector with N elements.

powerSpec = abs(result).^2;

The total energy can be calculated by

totalPower = sum(powerSpec);

or

totalPower = result' * result;

If result is a row vector you have to use

totalPower = result * result';