Multirate Filter Bank Implementation
The upfirdn function alters the sampling
rate of a signal by an integer ratio P/Q. It computes the result of
a cascade of three systems that performs the following tasks:
Upsampling (zero insertion) by integer factor
pFiltering by FIR filter
hDownsampling by integer factor
q
For example, to change the sample rate of a signal from 44.1 kHz to 48 kHz, we first find the smallest
integer conversion ratio p/q. Set
d = gcd(48000,44100); p = 48000/d; q = 44100/d;
In this example, p = 160 and q = 147. Sample rate conversion is then
accomplished by typing
y = upfirdn(x,h,p,q)
This cascade of operations is implemented in an efficient manner
using polyphase filtering techniques, and it is a central concept
of multirate filtering. Note that the quality of the resampling result
relies on the quality of the FIR filter h.
Filter banks may be implemented using upfirdn by
allowing the filter h to be a matrix, with one
FIR filter per column. A signal vector is passed independently through
each FIR filter, resulting in a matrix of output signals.
Other functions that perform multirate filtering (with fixed
filter) include resample, interp, and decimate.