I consider a signal of length $N = 2^n$ for some $n$. I want to derive two signal from it, one containing only the odd frequencies and one only the even frequencies. Each of these signals have length $N/2$.
I use this code in MATLAB:
n = 3; N = 2^n; signal = ifft( rand(1,N) ); for i = 1:length(signal)/2 sig1(i) = (signal(i) + signal(i+N/2)) ; sig2(i) = (signal(i) - signal(i+N/2)) ; end stem(0:N-1, abs(fft(signal)),'k'); hold on stem(0:2:N-1, abs(fft(sig1)), 'b*'); hold on; stem(1:2:N-1, abs(fft(sig2)),'rs');
What I should get are two signals, each one of length $N/2$. One containing only the even frequencies and the other one only the odd ones. The way I proceed can be seen either as the first step of the butterfly algorithm in the FFT, or, by using a FIR filter approach, by applying two different filters to my original signal.
However, the signal containing the odd frequencies is always off and when I compare the FFTs they do not match. Why? What is the explanation? I am a bit puzzled by this result.