函数介绍
Savitzky Golay filter 可以使用 Matlab 内置函数来实现。
y = sgolayfilt(x,order,framelen) y = sgolayfilt(x,order,framelen,weights) y = sgolayfilt(x,order,framelen,weights,dim)
参数介绍:
x :输入信号,可以是一个向量或矩阵order :多项式阶次,指定为一个正整数。注意如果 order = framelen-1,那么滤波器不产生平滑。实际效果参考下图。framelen :帧长度,指定为一个正奇整数。
示例程序
此程序随机生成了一串共 34 个随机数据,之后使用 sgolayfilt() 函数进行滤波。
图像中将原数据结果及滤波后的结果同时绘制在了一张图上。
这里注意两个参数:order (阶次)和 framelen (帧长度)。
order = 3;
framelen = 11;
lx = 34;
x = randn(lx,1);
sgf = sgolayfilt(x,order,framelen);
plot(x,':')
hold on
plot(sgf,'.-')
legend('signal','sgolay')
滤波器不产生平滑的效果如下:
Ref:
- sgolayfilt - MathWorks
- sgolay - MathWorks
- Matlab中Savitzky-Golay filtering(最小二乘平滑滤波)函数sgolayfilt的使用方法
|