sgolayfilt

Savitzky-Golay filtering

Syntax

y = sgolayfilt(x,k,f)
y = sgolayfilt(x,k,f,w)
y = sgolayfilt(x,k,f,w,dim)

Description

y = sgolayfilt(x,k,f) applies a Savitzky-Golay FIR smoothing filter to the data in vector x. If x is a matrix, sgolayfilt operates on each column. The polynomial order k must be less than the frame size, f, which must be odd. If k = f-1, the filter produces no smoothing.

y = sgolayfilt(x,k,f,w) specifies a weighting vector w with length f, which contains the real, positive-valued weights to be used during the least-squares minimization. If w is not specified or if it is specified as empty, [], w defaults to an identity matrix.

y = sgolayfilt(x,k,f,w,dim) specifies the dimension, dim, along which the filter operates. If dim is not specified, sgolayfilt operates along the first non-singleton dimension; that is, dimension 1 for column vectors and nontrivial matrices, and dimension 2 for row vectors.

Examples

expand all

Savitzky-Golay Filtering of a Speech Signal

Smooth the mtlb signal by applying a cubic Savitzky-Golay filter to data frames of length 41.

load mtlb
smtlb = sgolayfilt(mtlb,3,41);

subplot(2,1,1)
plot(1:2000, mtlb(1:2000))
axis([0 2000 -4 4])
title('mtlb')
grid

subplot(2,1,2)
plot(1:2000,smtlb(1:2000))
axis([0 2000 -4 4])
title('smtlb')
grid

More About

expand all

Tips

Savitzky-Golay smoothing filters (also called digital smoothing polynomial filters or least-squares smoothing filters) are typically used to "smooth out" a noisy signal whose frequency span (without noise) is large. In this type of application, Savitzky-Golay smoothing filters perform much better than standard averaging FIR filters, which tend to filter out a significant portion of the signal's high frequency content along with the noise. Although Savitzky-Golay filters are more effective at preserving the pertinent high frequency components of the signal, they are less successful than standard averaging FIR filters at rejecting noise.

Savitzky-Golay filters are optimal in the sense that they minimize the least-squares error in fitting a polynomial to frames of noisy data.

References

[1] Orfanidis, Sophocles J. Introduction to Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1996.

Was this topic helpful?