1.1 What does multirate mean?
Multirate simply means “multiple sampling rates”. A multirate DSP system uses multiple sampling rates within the system. Whenever a signal at one rate has to be used by a system that expects a different rate, the rate has to be increased or decreased, and some processing is required to do so. Therefore “Multirate DSP” really refers to the art or science of changing sampling rates.
1.2 Why should I do multirate DSP?
The most immediate reason is when you need to pass data between two systems which use incompatible sampling rates. For example, professional audio systems use 48 kHz rate, but consumer CD players use 44.1 kHz; when audio professionals transfer their recorded music to CDs, they need to do a rate conversion.
But the most common reason is that multirate DSP can greatly increase processing efficiency (even by orders of magnitude!), which reduces DSP system cost. This makes the subject of multirate DSP vital to all professional DSP practitioners.
1.3 What are the categories of multirate?
Multirate consists of:
- Decimation: To decrease the sampling rate,
- Interpolation: To increase the sampling rate, or,
- Resampling:To combine decimation and interpolation in order to change the sampling rate by a fractional value that can be expressed as a ratio. For example, to resample by a factor of 1.5, you just interpolate by a factor of 3 then decimate by a factor of 2 (to change the sampling rate by a factor of 3/2=1.5.)
The distribution file of Iowegian’s ScopeFIR contains a multirate algorithm package that includes decimation, interpolation, and resampling functions written in C. Multirate implementations in other languages are available on GitHub.
Many DSP books omit the important subject of multirate altogether. But two introductory texts that briefly go into it are:
- Understanding Digital Signal Processing [Lyo97]
- Digital Signal Processing and the Microcontroller [Gro98]
But it’s a big subject. The two most popular “industrial strength” (advanced) books that cover multirate in depth are: