Matlab的smooth方法(降噪\光顺\移动平均)

对于需要对原始数据降噪和光顺处理的需求,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,...)

原理

Matlab的smooth方法(降噪\光顺\移动平均)_第1张图片
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)

Matlab的smooth方法(降噪\光顺\移动平均)_第2张图片
Paste_Image.png

参考

matlab中的移动平均滤波和中值滤波
Savitzky-Golay滤波器

Savitzky-Golay 方法filter

Savitzky-Golay filtering

Matlab的smooth方法(降噪\光顺\移动平均)_第3张图片
Savitzky-Golay filter 效果

Syntax

y = sgolayfilt(x,order,framelen)
y = sgolayfilt(x,order,framelen,weights)
y = sgolayfilt(x,order,framelen,weights,dim)

你可能感兴趣的:(Matlab的smooth方法(降噪\光顺\移动平均))