# Understanding multirate filtering fundamentals

I am having trouble grasping some of the fundamental concepts of multirate filtering. I see from various sources that the basic building blocks of a multirate filter are the dyadic analysis and synthesis blocks.

• Question 1:

The analysis block structure looks like the following, where the wide band signal is split into lowpass and highpass bands, each with a cutoff of FS/4 (Nyquist/2). Each band is then decimated by a factor of 2.

How can you accurately represent the signal in the high frequency band when it contains frequency information above the Nyquist limit of the new decimated sample rate?

• Question 2:

The analysis block structure looks like the following, where the sub-band signal is interpolated, re-filtered and then summed.

What is the purpose of the second filtering?

• The generalized Nyquist Theorem is "You need at least two samples per Hz of bandwidth". If your signal goes from 999000Hz to 1001000 Hz, the required sample rate is only 4kHz even if all frequencies involved are much higher. Mar 22 '12 at 13:12
• I now see that "per Hz of bandwidth" is the key here that I was missing. Mar 22 '12 at 13:34

I will answer question 2 first, and hopefully that will help explain what is going on with question 1.

When you sample a baseband signal there are implicit aliases of the baseband signal at all integer multiples of the sampling frequency, as shown in the picture below. The solid image is the original baseband signal, and the aliases are represented by the dashed images. I chose an assymetric (i.e. complex) signal to help demonstrate the inversion that happens at odd multiples of the sampling frequency.

You might ask, "Do the aliases really exist?" It's a bit of a philosophical question. Yes, in a mathematical sense they do exist, because all of the aliases (including the baseband signal) are indistinguishable from each other.

When you upsample by inserting zeros in between the original samples, you are effectively increasing the sampling rate by the upsample rate. So if you upsample by a factor of two (putting one zero in between each sample), you increase your sampling rate and the Nyquist rate by a factor of 2, resulting in the picture below.

As you can see, one of the implicit aliases in the earlier image has now become explicit. If you FFT the samples it will show up. A non-rigorous proof that the DFT transform does not fundamentally change is given below.

Now that you have the two explicit aliases, if you just want the baseband alias then you have to low-pass filter to get rid of the other alias. Sometimes, though, people use the other aliases to do their modulating for them. In that case you would high-pass filter to get rid of the baseband signal. I hope that answers question 2.

Question 1 is basically the inverse of question 2. Suppose that you are already in the situation shown in the second picture. There are two ways to get the baseband signal that you want. The first way is to low-pass filter (thereby getting rid of the higher alias) and then decimating by a factor of two. That gets you to picture #1.

The second way is to high-pass filter (getting rid of the baseband alias) and then decimating by a factor of two. The reason that this works is that you are intentionally aliasing the signal into the baseband, thus, once again, getting you to picture #1.

Why would you want to do it that way? Because in most situations the signals will not be the same, so you can choose which signal you want, or do them both separately.

If you are studying multi-rate processing, I highly recommend getting "Multirate Signal Processing for Communication Systems" by Frederic Harris. He does a really good job of explaining the theory without neglecting the math, and giving a lot of practical advice too.

EDIT: Intentionally sampling a signal at less than the Nyquist rate is called undersampling. The following is my attempt at explaining mathematically why the FFT does not change when you upsample. "x[n]" is the original set of samples, "u" is the upsampling factor, and "x'[n]" is the upsampled set of samples.

$$\begin{eqnarray*} X[k] &=& \sum_{n=0}^{N-1} x[n]e^{-i2\pi kn/N}\\ X'[k] &=& \sum_{n=0}^{uN-1} x'[n]e^{-i2\pi kn/uN} , \{ &x&'[n] = 0, n \neq mu, m \in (0..N-1)\\ &x&'[n] = x[n/u], n = mu\\ &=& \sum_{n=0}^{N-1} x'[un]e^{-i2\pi kun/uN}\\ &=& \sum_{n=0}^{N-1} x[n]e^{-i2\pi kn/N}\\ &=&X[k] \end{eqnarray*}$$

Apologies for the ugly formatting. I am a LaTex noob.

EDIT 2: I should have pointed out that the DFT's of x[n] and x'[n] are not truly identical. The sample rate is higher, which as I explained in the earlier part of the answer, causes aliases to be "exposed". I was trying to point out in my non-mathematician way that the DFT's are, aside from the sample rate, the same.

• This is a fantastic answer. Thankyou. Very clear indeed. Mar 21 '12 at 0:33
• The content in your edit is incorrect. If you upsample a signal by inserting zeros between samples, then the DFT of the resulting signal is not the same as the DFT of the original signal; the zero-stuffed signal's spectrum equal to the original, frequency-compressed and repeated by the upsampling factor $U$. Mar 22 '12 at 1:01
• @JasonR I believe that the edit is basically correct, though I did fail to point out that the sample rate changes, which is itself an important change. I believe where we differ is that you are thinking about it from a normalized perspective, which indeed makes what happens look like "compression" and "repetition". As I tried to explain in the original part of my answer, though, another way to look at it is that we are simply increasing the sample rate, which causes the other aliases to be exposed. Mar 22 '12 at 10:00
• @JasonR If I made a mistake in the equations, though, please do point it out to me and I will be happy to fix it. Thanks. Mar 22 '12 at 10:01
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 1, "mathjax_display_tex": 1, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.8170331120491028, "perplexity": 558.6629971081647}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2021-39/segments/1631780054023.35/warc/CC-MAIN-20210917024943-20210917054943-00647.warc.gz"}