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]
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.