Harminv is a program (and accompanying library) to solve the problem of harmonic inversion. Given a discrete-time, finite-length signal that consists of a sum of finitely-many sinusoids (possibly exponentially decaying) in a given bandwidth, it determines the frequencies, decay constants, amplitudes, and phases of those sinusoids.
Harminv can, in principle, provide much better accuracy than straightforwardly extracting FFT peaks because it assumes a specific form for the signal. (Fourier transforms, in contrast, attempt to represent any data as a sum of sinusoidal components.) It is also often more robust than directly least-squares fitting the data (which can have problematic convergence). Harminv employs the “filter diagonalization method” (FDM) of Mandelshtam and Taylor.
License: GNU GPL.
Tags: harmonic analysis, digital signal processing.
Interfaces: command line, library.
Source language: C.
Supported languages: C, C++.
Requires BLAS, LAPACK.
Developer: Steven G. Johnson.
Homepage: http://ab-initio.mit.edu/harminv/.
Documentation: http://ab-initio.mit.edu/harminv/harminv-man.html.