I normalized the spectrum of a time series and windowed the spectrum, then something strange happened. The code below can run in MATLAB or Octave.
figure; n = 2e3; t = 1:n; m = n/2+1; f = linspace(0,1,m); x = rand(1,n) - 0.5; y = fft(x); subplot(2,2,1); plot(t,x,'k'); axis tight; xlabel('t/s'); title('original signal x'); subplot(2,2,2); plot(f,abs(y(1:m)),'k'); axis tight; xlabel('f/hz'); title('original spectrum'); y1 = y ./ abs(y); k = n/10; w = sin(linspace(0,pi/2,k)); y1(1:k) = y1(1:k) .* w; y1(m:-1:m-k+1) = y1(m:-1:m-k+1) .* w; y1(n-m+3:n) = y1(m-1:-1:2); x1 = real(ifft(y1)); y2 = fft(x1); x2 = real(ifft(y2)); subplot(2,2,3); plot(t,x1,'k',t,x2-x1,'r'); axis tight; xlabel('t/s'); title('whitened signal x1(black) and x2-x1(red)'); subplot(2,2,4); plot(f,abs(y1(1:m)),'k',f,abs(y2(1:m)),'r'); axis tight; xlabel('f/hz'); title('whitened spectrum y1(black) and y2(red)');
As shown in subplot 3, the red line is the difference between
x2, meaning that they are exactly the same, but as shown in subplot 4, their spectrum (black and red, respectively) is different.
So, It's weird FFT of IFFT of a spectrum is different from the spectrum itself.