Reputation: 53
Can anyone please explain the algorithm of performing the symmetric IFFT in MATLAB?
As an example:
out_signal = ifft(X,'symmetric');
Here, X
is complex symmetric signal.
Upvotes: 2
Views: 3385
Reputation: 104565
The symmetric
flag when performing the ifft
assumes that your frequency domain signal is conjugate symmetric or Hermitian. A function is conjugate symmetric when you reflect the signal across the y
-axis and it is equal to its complex conjugate. In other words:
What this actually means is that the sign of the imaginary part of your signal is opposite when x < 0
.
The reason why this is so useful is because it allows for more optimization and short-cuts in computing the inverse should the signal be conjugate symmetric. This means that one half of the spectrum is for the positive frequencies while the other half is for negative frequencies. The negative coefficients are conjugates of the positives. This leads up to a useful property of the FFT where if the Fourier Transform of a signal is conjugate symmetric, its time-domain equivalent will be purely real-valued. If you know that the output of the time-domain signal is purely real-valued, this will provide some speedups to ifft
.
Take a look at the Wikipedia article I linked above for more details. Also, take a look at this useful post on DSP StackExchange for a good explanation too. If you want the IFFT algorithm to take advantage of the conjugate symmetric structure, take a look at these two posts for more details:
Upvotes: 7