This package provides a C++ object for efficient, polyphase FIR resampling along with a python module with a functional and object interface.
A "filter bank with resampling" is an operation on an input signal that generates an output signal, consisting of the following 3 steps:
For an input signal with sampling rate T, the generated output signal has sampling rate of P/Q*T. The FIR filter is usually designed to prevent aliasing from corrupting the output signal.
An "efficiently implemented, polyphase filter bank with resampling" implements these three operations with a minimal amount of computation.
The algorithm is an implementation of the block diagram shown on page 129 of the Vaidyanathan text <1> (Figure 4.3-8d).
<1> P. P. Vaidyanathan, Multirate Systems and Filter Banks, Prentice Hall, 1993.
The module "upfirdn" provides a functional and object interface.
upfirdn - functional interface
ResamplerBank - object interface
These python wrappers support multi-dimensional arrays according to the usual numpy broadcasting rules. See their doc-strings for usage notes.
The Resampler object defined in Resampler.h is templatized on input signal, output signal, and coefficient types.
The _Resampler module is a shared-object extension built from the C++ by SWIG with typemaps and template instantiations as defined in Resampler.i. It provides 4 template instantiations:
ResamplerRR, ResamplerRC, ResamplerCR, ResamplerCC
where the "R/C" denotes real or complex, for the signal type, and the coefficient type.
MERCURIAL REPOSITORY AT GOOGLE CODE
See https://code.google.com/p/upfirdn/ for a browse-able hg repository of the source files.