Savitzky-Golay Smoothing Filter

Very simple function for Savitzky-Golay Smoothing
2.1K Downloads
Updated 16 Jun 2014

View License

After looking at a lot of the Savitzky-Golay implementations on File Exchange, I could not find one as simple but as effective as this one. savGol is from the Book, "Solving Problems in Scientific Computing Using Maple and Matlab" by Walter Gander and others. Gander cites Teukolsky from Computers in Physics from 1990. Here is a link to the book website:
http://www.solvingproblems.ethz.ch/
g = savGol(f, nl, nr, M)

f: noisy data

nl: number of points to left of reference point

nr: number of points to right of reference point

M: Order of least squares polynomial

Example:
x = [0:1000-1]'/(1000-1);
signal = exp (- 100*(x - 1/5).^2) + exp (- 500*(x - 2/5).^2) + exp (-2500*(x - 3/5).^2) + exp (-12500*(x - 4/5).^2);
randn ('seed', 0);
noisySignal = signal + 0.1* randn (size (x));

smoothSignal = savGol(noisySignal, 16, 16, 4);

plot(x,noisySignal)
hold on;
plot(x, smoothSignal,'r','LineWidth',3)
legend('Noisy Signal', 'Smooth Signal')

Cite As

Jason Nicholson (2024). Savitzky-Golay Smoothing Filter (https://www.mathworks.com/matlabcentral/fileexchange/45420-savitzky-golay-smoothing-filter), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2013b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.2.0.0

Changed to the economy QR decomposition when calling QR. This increases speed and allows calculating more coefficients for the same amount memory.

1.1.0.0

Change MATLAB version information.

1.0.0.0