# Reconstruction of bandpass filtered signal from decimated version of itself

I know how to up-sample a discrete, real signal (by an integer factor n) that is band-limited to frequencies between $f_1 = 0 \mathrm{Hz}$ and and $f_2$: Just insert $n-1$ zeros between every original sample (thereby multiplying the sampling rate by $n$) and send the result through a brick wall (sinc) filter to get the interpolated values.

In my DSP book I've read about a generalization of the sampling theorem: If I have a discrete, real signal that is band-limited to frequencies between $f_1 = f_0 k$ and and $f_2 = f_0 (k + 1)$, with $k$ even, I can just subsample it with a frequency of $2 f_0$ (i.e. decimate) it, and I will retain the complete information (basically the frequencies get shifted down to the baseband between $0 \mathrm{Hz}$ and $f_0$).

My question to you: does the following method let me correctly reconstruct the original signal (in the frequency range between $f_1$ and $f_2$ as given in the previous paragraph) from the decimated signal?

Just insert $k-1$ zeros between every original sample (thereby multiplying the sampling rate by $k$) and send the result through a brick wall filter (bandpass filter with passband $f_1$ … $f_2$) to get the interpolated values.

If this method is not correct, what needs to be changed to get the correct results?

I assume the problem could also be solved by converting to an analytic signal, upsampling in the baseband and then shifting the frequencies up by $f_1$. I want to avoid this because of the additional cpu load this would cause. Please let me know whether you think the method above would work as well, or some other ways to save some processing costs.

Flo

The sampling technique you describe is sometimes called bandpass sampling, or undersampling (read more about it here). You can get the original signal back, but the process is not as simple as you describe it.

You need to realize that the undersampled signal consists of an infinite number of replicas of the original spectrum. If you choose your sampling frequency correctly, one of those replicas will be centered around $f=0$. That particular replica corresponds to a baseband signal.

You can eliminate all replicas except the one at baseband with a low-pass filter with an appropriate cut-off frequency. After that, you can upsample and then upconvert the baseband signal back to $f_0$. The resulting signal will be (ideally) the same as the original.

• Thanks a lot! The Wikipedia article on undersampling that you provided contains the solution at the end: "The corresponding interpolation function is the bandpass filter given by this difference of lowpass impulse responses...". So the process really appears to be as simple as I had hoped (and parts of your reply seem to be incorrect), but I'll click the check mark on your answer anyways because you provided the right link. – flo von der uni May 29 '15 at 21:34
• @flovonderuni, I mistakengly assumed that you would use bandpass sampling to downconvert a signal -- this is what undersampling is most frequently used for (as noted in the Wikipedia page, too). I'm glad my answer was useful, even if I didn't answer your question very precisely. – MBaz May 30 '15 at 0:33

Zero stuffing (which is what you propose) will cause a lot of harmonics in the upsampled signal. They will be proportional to the strength of the original signal. Your brick wall filter (a low pass will do, no need for a bandpass) will greatly reduce them, but won't get rid of them entirely.

Depending on your application, the result of zero stuffing and filtering may be fine. If not, you could minimize the harmonics with a couple of methods.

You could duplicate samples (original sample+ (n-1) copies.)

You could interpolate (calculate values along the line between sample und sample+1.)

Duplicating is easy and will cost about as much processor time as zero stuffing. Interpolating would be smoother but would cost more time as you must calculate individual values.