prony is a python package that provides numerical routines for Prony decomposition of discrete signals.
The Prony method is a way to obtain the damped-sinusoidal components constituiting a signal. In other words, it expresses the signal as a linear combination of damped sinusoids.
This damped-sinusoid representation is in fact equivalent to all-pole models encountered in signal processing (filter design and system identification). It may also be considered a special case of Padé approximant technique.
The damped-sinusoid a.k.a all-pole representation is particularly useful to describe infinite-impulse-response (IIR) filters in a parsimonious manner. As a consequence, many physical systems with resonant modes - speakers, rooms, waveguides etc. - are modelled this way.
The Prony algorithms implemented in this package can, given a recorded discrete impulse response, estimate the coefficients, frequencies, and damping factors of its constituents.
For a mathematical description, scroll down
Please use uv for the love of God.
- Clone the repo
git clone https://github.com/enceladus2000/prony --branch main
- Initialize a virtual environment.
cd prony
uv venv
source .venv/bin/activate
- Run uv sync
uv sync
See this notebook for an example.
The signal model is as follows:
where