fitting.lpsvd

fitting.lpsvd(x, Y, eta=0.75, refine=False)

LPSVD fitting function based on Kumaresan and Tufts, IEEE Transactions on Acoustics, Speech and Signal Processing ASSP-30, 833 (1982) and the Matlab code by Greg Reynolds, 2006 (from mathworks.com).

Use this function to extract the parameters of arbitrarily many exponentially decaying sinusoids from (noisy) time domain data (x,y) without prior knowledge of these parameters nor the exact number of oscillation frequencies.

Parameters:
  • x (array) – x-values / time axis.
  • Y (array) – Input data (same shape as x).
  • eta (float) – Ratio of number of points in sample to number of points used for LP (< 1).
  • refine (bool) – If True, run a standard least squares fitting after LPSVD to further refine the the LPSVD parameters.
Returns:

A set of coefficients for each sinusoid. The number of sinusoids is len(res) / 4. For each sinusoid the function returns

  • a amplitude,
  • b exponential decay rate,
  • f frequency (rad),
  • phi phase (rad).

Note

The resulting array can be directly used as input to sinusoids() and sinusoidsFT().

See also

lpsvd2().