3
votes

I perform an iFFT on a complex-valued spectrum and change the corresponding time domain-signal by lets say nulling the first sample. Finally I transform it back to frequency domain via FFT.

I wonder where is the (physically) difference between using the two-sided (symmetric) spectrum, or only the one-sided spectrum (positive frequencies only) here, since the two results are different (while comparing the positive frequencies)?

Version 1 (two-sided spectrum): fft( nulling( ifft( [0, 1+1j, 2+j, 2-2j, 1-1j] ) ) )

Output: [-1.2, -0.2+1j, 0.8+2j, 0.8-2j, -0.2-1j]

Version 2 (one-sided spectrum): fft( nulling( ifft( [0, 1+1j, 2+j] ) ) )

Output: [ -1-1j, 0+0j, 1+1j]

1

1 Answers

3
votes

Since your IFFT routine doesn't know that you are supplying a one-sided spectrum (ie. that there are implicit complex conjugate symmetric negative frequency bins) it can only (mis-)interpret this as a normal N point complex frequency domain input with both positive and negative frequency bins.

Some FFT libraries (e.g. FFTW, vDSP) do support real-to-complex FFT and complex-to-real IFFT, where the number of complex frequency domain bins is N / 2 and the redundant complex conjugate symmetric terms are omitted, but they typically have a separate API for this which is different from the more general complex-to-complex case with N inputs and N outputs.