frequency#

frequency(x, y, filter_window=5, filter_dim=2)[source]#

Get frequency of oscillating signal.

First this tries FFT. If the true value is likely below or near the frequency resolution, the function tries low frequency fit with

\[f_{\rm est} = \frac{1}{2\pi {\rm max}\left| y \right|} {\rm max} \left| \frac{dy}{dx} \right|\]

given \(y = A \cos (2\pi f x + phi)\). In this mode, y data points are smoothed by a Savitzky-Golay filter to protect against outlier points.

Note

This function returns always positive frequency. This function is sensitive to the DC offset. This function assumes sorted, no-overlapping x values.

Parameters:
  • x (ndarray) – Array of x values.

  • y (ndarray) – Array of y values.

  • filter_window (int) – Window size of Savitzky-Golay filter. This should be odd number.

  • filter_dim (int) – Dimension of Savitzky-Golay filter.

Returns:

Frequency estimation of oscillation signal.

Return type:

float