Module Description: functions to find maxima minima or smooth the
signal tracks.
This code is free software; you can redistribute it and/or modify it
under the terms of the BSD License (see the file LICENSE included with
the distribution).
Smooth (and optionally differentiate) data with a Savitzky-Golay filter.
The Savitzky-Golay filter removes high frequency noise from data.
It has the advantage of preserving the original shape and
features of the signal better than other types of filtering
approaches, such as moving averages techniques.
:type y: None
:param y: the values of the time history of the signal.
:type y: array_like, shape (N,)
:type window_size: typedef
:param window_size: the length of the window. Must be an odd integer number.
:type window_size: int
:type order: typedef
:param order: the order of the polynomial used in the filtering.
Must be less then window_size - 1.
Parameters:
deriv (int) – the order of the derivative to compute (default = 0 means only smoothing)
Returns:
ys – the smoothed signal (or it’s n-th derivative).
Return type:
ndarray, shape (N)
Notes
The Savitzky-Golay is a type of low-pass filter, particularly
suited for smoothing noisy data. The main idea behind this
approach is to make for each point a least-square fit with a
polynomial of high order over a odd-sized window centered at
the point.
Examples
t = np.linspace(-4, 4, 500)
y = np.exp(-t**2) + np.random.normal(0, 0.05, t.shape)
ysg = savitzky_golay(y, window_size=31, order=4)
import matplotlib.pyplot as plt
plt.plot(t, y, label=’Noisy signal’)
plt.plot(t, np.exp(-t**2), ‘k’, lw=1.5, label=’Original signal’)
plt.plot(t, ysg, ‘r’, label=’Filtered signal’)
plt.legend()
plt.show()
Smooth (and optionally differentiate) data with a Savitzky-Golay filter.
The Savitzky-Golay filter removes high frequency noise from data.
It has the advantage of preserving the original shape and
features of the signal better than other types of filtering
approaches, such as moving averages techhniques.
:param y: the values of the time history of the signal.
:type y: array_like, shape (N,)
:type window_size: typedef
:param window_size: the length of the window. Must be an odd integer number.
:type window_size: int
:param deriv: the order of the derivative to compute (default = 0 means only smoothing)
:type deriv: int
Returns:
ys – the smoothed signal (or it’s n-th derivative).
Return type:
ndarray, shape (N)
Notes
The Savitzky-Golay is a type of low-pass filter, particularly
suited for smoothing noisy data. The main idea behind this
approach is to make for each point a least-square fit with a
polynomial of high order over a odd-sized window centered at
the point.