对于需要对原始数据降噪和光顺处理的需求,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,...)
原理
方法
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)
参考
matlab中的移动平均滤波和中值滤波
Savitzky-Golay滤波器
Savitzky-Golay 方法filter
Savitzky-Golay filtering
Syntax
y = sgolayfilt(x,order,framelen)
y = sgolayfilt(x,order,framelen,weights)
y = sgolayfilt(x,order,framelen,weights,dim)