How to predict the spectrum of an aliased/folded signal without looking at the FFT?

This seems like a trivial concept but I just can't get the hold of it. I have a signal with two complex sinusoids having frequencies -25MHz and 17MHz. Currently it is being sampled at 64MHz so I get two peaks of fft at -25MHz and 17 MHz. If I throw every other sample away the component at 17MHz shifts to -30MHz and the one at -25MHz to 14 MHz.

I know it is due to the aliasing/folding but why exactly are these frequency components present in the aliased signal? Is there any way to predict the frequency content of the aliased signal without looking at the fft? What spectrum should I get if every fourth sample is dropped (i.e. sampling frequency now becomes 16MHz)?

Your description of the situation is faulty. A complex signal sampled at 64 MHz can represent frequencies from -32 MHz to +32 MHz, so the presence of tones at -25 MHz and +17MHz is fine. However, when you decimate by two the sample rate drops to 32 MHz, and the frequency range becomes -16 MHz to +16 MHz. In other words, you can't have a signal at -30 MHz afterwards.

The aliasing shifts the signals down to the new Nyquist zone (the region between the negative and positive Nyquist frequencies, -16 MHz and +16 MHz respectively). -25 MHz is 9 MHz below the negative Nyquist frequency so it is shifted up by 32 MHz (the width of the Nyquist zone) to +7 MHz. +17 MHz is 1 MHz above the positive Nyquist frequency, so it is shifted down by 32 MHz to -15 MHz.

The picture above shows the before (top plot) and after (bottom plot) frequency spectrum. It was created with the following Matlab commands:

sig = exp(j*(1:1000)*2*pi*-25E6/64E6) + exp(j*(1:1000)*2*pi*17E6/64E6);
freq = -32E6:64E6/1000:32E6;
dec = sig(1:2:end);
freqDec = -16E6:64E6/1000:(16E6-1);
subplot(2,1,1)
plot(freq, 20*log10(abs(fftshift(fft(sig)))))
subplot(2,1,2)
plot(freqDec, 20*log10(abs(fftshift(fft(dec)))))


EDIT: I see that you largely had the right idea when you calculated the aliased frequencies.  The only mistake that you made was to not divide the frequencies by 2 due to the decimation. Thus, -30 MHz should have been -15 MHz, and 14 MHz should have been 7 MHz.

• I'm not sure if the OP is working with a one sided or 2 sided representation of the frequency information. Note that in the original post, both aliased frequencies are positive. – user2718 Mar 1 '13 at 16:11
• Thank you very much Jim. I see what I was doing wrong. To get the new frequency axis I was doing something like -Fs/2:2*Fo:Fs/2-Fo where I should have changed the upper and lower bound of the new Nyquist zone. – qutab Mar 1 '13 at 16:54

Based on your post, you are down sampling you're signals by a factor of 2, so your new aliased frequencies should also be devided by this factor.

In general:

New Sampling rate (fs2): 32MHz New Nyquist frequency: 16MHz. Aliased freuencies fa: 7MHz, 15MHz Actual frequencies fx: -25MHz, 17MHz

To keep things simple I'll work with positive frequency first.

If the signals to be sampled are less than the new sampling rate, you can calculate the aliased frequencies as:

fa = |fs2 - fx|

So if we consider the original frequencies (fx) as positive (17MHz and 25MHz)...

17MHz ---> fa = 32MHz - 17MHz = 15MHz

25MHz ---> fz = 32MHz - 25MHz = 7MHz

Since you have a negative frequency to deal with you have to handle the negative frequency as:

fa = |-fs2-fx| = |-32MHz - (-25MHz)| = 7MHz

If you have a frequency greater than the new sample rate (fs2 = 32MHz) you have to modifiy the value of fs2. The new value is the integer multiple of fs2 that is closest to the frequency of the signal to be sampled. I'll call the modified value Nfs2.

For example if fx was 33MHz, you would use Nfs2' = (1)*fs2 = 32MHz because 32MHz is the closed integer multiple of 32MHz to 33MHz.

This would yeild fa = |33MHz - 32MHz| = 1MHz

If fx was 63MHz, you would use Nfs2 = 64MHz ( 2*32MHz is closest to 63MHz ).

This yields fa = |63MHz - 64MHz| = 1MHz

• You have the gist of it, but +17 MHz aliases down to -15 MHz, not +15 MHz. – Jim Clay Mar 1 '13 at 15:14
• @Jim Clay: Because we are working with complex (one sided frequencies). Got it. thanks! – user2718 Mar 1 '13 at 15:28