对于需要对原始数据降噪和光顺处理的需求,matlab提供了一个基础的湍动平均函数
语法
y = smooth(y)
gpuarrayYY = smooth(gpuarrayY)
yy = smooth(y,span)
yy = smooth(y,method)
yy = smooth(y,span,method)
yy = smooth(y,'sgolay',degree)
yy = smooth(y,span,'sgolay',degree)
yy = smooth(x,y,...)
原理
Paste_Image.png
方法
method
Description
'moving'
Moving average (default). A lowpass filter with filter coefficients equal to the reciprocal of the span.
'lowess'
Local regression using weighted linear least squares and a 1st degree polynomial model
'loess'
Local regression using weighted linear least squares and a 2nd degree polynomial model
'sgolay'
Savitzky-Golay filter. A generalized moving average with filter coefficients determined by an unweighted linear least-squares regression and a polynomial model of specified degree (default is 2). The method can accept nonuniform predictor data.
'rlowess'
A robust version of 'lowess' that assigns lower weight to outliers in the regression. The method assigns zero weight to data outside six mean absolute deviations.
'rloess'
A robust version of 'loess' that assigns lower weight to outliers in the regression. The method assigns zero weight to data outside six mean absolute deviations.
Savitzky-Golay滤波器(通常简称为S-G滤波器)最初由Savitzky和Golay于1964年提出,发表于Analytical Chemistry 杂志。之后被广泛地运用于数据流平滑除噪,是一种在时域内基于局域多项式最小二乘法拟合的滤波方法。这种滤波器最大的特点在于在滤除噪声的同时可以确保信号的形状、宽度不变。
特别
smoothts可以提供几种特殊的光顺方法,语法是
output = smoothts(input)
output = smoothts(input, 'b', wsize)
output = smoothts(input, 'g', wsize, stdev)
output = smoothts(input, 'e', n)
Paste_Image.png
参考
Savitzky-Golay 方法filter
Savitzky-Golay filtering
Savitzky-Golay filter 效果
Syntax
y = sgolayfilt(x,order,framelen)
y = sgolayfilt(x,order,framelen,weights)
y = sgolayfilt(x,order,framelen,weights,dim)