Digital Signal Processing Templates in C++ (with access from python)

Digital Filter Demo page with free downloads for WinXP and linux

Interactive Web based design

Documentation for DSP Templates C++ library (also useful for python package pyspuc)

Why use C++ Templates?

Since most DSP algorithms are not based on specific data types it makes sense to represent them using code that is not type specific for several reasons. Both C++ and untyped languages allow this to some degree. Algorithms can be written in python without specifying data types. However, since typically simulations and/or analysis must be done, simulation speed becomes an issue. C++ does not have the performance issues of interpreted languages. Also since the resulting DSP code is often used in the design of ASICs, FPGAs or DSP processors, it is typical to have a C/C++ representation of the algorithm. The beauty of C++ templates is that the same code can be used during the whole design process. For algorithmic tradeoffs, double/floating point numbers can be used, while for targetting hardware or software implementations, fixed-point or integer types can be used for bit-width reduction and/or analysis.

Python signal processing and C++ Templates?

Using up-to-date tools written in both C++ and python, such as the Boost python library, pyste and py++, as well as gccxml, it's possible to generated python bindings for most if not all of the C++ template library. Using the power of python and packages such as pythoncard, matplotlib, scipy, etc, one can quickly and easily do many of the same functions as is typically done in matlab or octave. However, by first writing the code in C++ there is no need to have multiple respresentations of the design as there is no need for anything other than test and support functions to be written in python which is inherently better suited for this purpose over C++.

This Library provides both C++ template code and the pyspuc python package and includes

Email: <info AT SPAMFREE pyspuc DOT com>


CategoryHomepage

Main (last edited 2008-05-23 19:57:06 by tony_kirke)