Numerical derivatives computation using Savitzky-Golay filter.
D = sgolaydiff(X, order, k, nf) D = sgolaydiff(X, order, k, nf, w) D = sgolaydiff(X, order, C)
It can be either a real vector or a general real array. If it is an array the derivation is applied along the first non singleton dimension.
a positive scalar with integer value, the order of derivation.
a real nf by k+1 array: the matrix of differentiation filters computed by the sgolay function.
a positive scalar with integer value: the fitting polynomial degree.
a positive scalar with integer value: the filter length, must be odd and greater the k+1.
a real vector of length nf with positive entries: the weights. If omitted no weights are applied.
A vector with identical shape as X, the estimated derivative.
This function computes numerical derivatives using the FIR Savitzky-Golay smoothing Filter. This is achieved by fitting successive sub-sets of adjacent data points with a low-degree polynomial by the method of linear least squares.
order must be less than k
The (nf−1)/2 first and last derivative values are estimated by adding to the input signal, in reverse order and vertically symmetrized, copies of the first (nf−1)/2 points at the beginning and copies of the last (nf−1)/2 points at the end .
//generate a noisy signal dt=0.01; t = (0:0.01:4*%pi)'; x = sin(t)+0.03*rand(t,"normal"); clf(); //first order derivative subplot(211) dx = sgolaydiff(x,1,3,61); plot(t(2:$),diff(x)/dt,'g',t,cos(t),'b',t,dx/dt,'r'); legend(["diff","theoretical","sgolaydiff"]); //second order derivative subplot(212) d2x = sgolaydiff(x,2,3,101); plot(t,-sin(t),'b',t,d2x/(dt^2),'r'); legend(["theoretical","sgolaydiff"]); title("Second order differentiation")
Abraham Savitzky et Marcel J. E. Golay, « Smoothing and Differentiation of Data by Simplified Least Squares Procedures », Analytical Chemistry, vol. 8, no 36, 1964, p. 1627–1639 (DOI 10.1021/ac60214a047)
- sgolay — Savitzky-Golay Filter Design
- sgolayfilt — Filter signal using Savitzky-Golay Filter.
- diff — Difference and discrete derivative
|6.1.1||Function added. Courtesy of Serge Steer, INRIA|
|Report an issue|
|<< sgolay||Filters||sgolayfilt >>|