主要内容

斯戈莱菲尔特

Savitzky-Golay滤波

描述

实例

Y=sgolayfilt(x,顺序,框架)采用多项式阶Savitzky-Golay有限脉冲响应(FIR)平滑滤波器顺序和帧长度框架将数据转换为向量x如果x是一个矩阵斯戈莱菲尔特对每个列进行操作。

实例

Y=sgolayfilt(x,顺序,框架,权重)指定在最小二乘最小化期间使用的权重向量。

Y=sgolayfilt(x,顺序,框架,权重,暗淡的)指定过滤器的操作方向。

例子

全部折叠

生成随机信号并使用斯戈莱菲尔特. 指定3的多项式顺序和11的帧长度。绘制原始信号和平滑信号。

顺序=3;framelen=11;lx=34;x=randn(lx,1);sgf=sgolayfilt(x,顺序,帧);图(x,“:”)举行地块(sgf,'.-')传奇(“信号”,“斯戈莱”)

图形包含一个轴对象。轴对象包含两个line类型的对象。这些对象表示信号sgolay。

这个斯戈莱菲尔特函数通过将信号与数据中心行进行卷积来执行大部分滤波B,输出sgolay。结果是滤波信号的稳态部分。生成并绘制此部分。

m=(framelen-1)/2;B=sgolay(order,framelen);stable=conv(x,B(m+1,:),“相同”);情节(稳定)图例(“信号”,“斯戈莱”,“稳定”)

图中包含一个轴对象。轴对象包含3个类型为line的对象。这些物体代表信号,sgolay,稳定。

靠近信号边缘的样本不能放置在对称窗口的中心,必须进行不同的处理。

为了确定启动瞬态,矩阵乘以第一个(framelen-1)/2B首先框架信号的样本。

ybeg = B (1: m:) * x (1: framelen);

为了确定终端瞬态,矩阵乘以终端(framelen-1)/2B通过最后的框架信号的样本。

yend = B (framelen-m + 1: framelen:) * x (lx-framelen + 1: lx);

将瞬态和稳态部分连接起来,以生成完整的信号。

cmplt =稳定;cmplt (1: m) = ybeg;cmplt (lx-m + 1: lx) = yend;情节(cmplt)传说(“信号”,“斯戈莱”,“稳定”,“完成”)举行

图中包含一个轴对象。轴对象包含4个类型为line的对象。这些物体代表信号,sgolay,稳定,完整。

在最小化中增加权重打破了对称B并且需要额外的步骤才能找到合适的解决方案。

加载采样的语音信号 F s = 7418 赫兹 。该文件包含一段女性声音的录音,该声音说“MATLAB®”

负载mtlbt =(0:长度(mtlb) 1) / Fs;

对长度为21的数据帧应用多项式阶数为9的Savitzky-Golay滤波器平滑信号。绘制原始信号和滤波信号。放大0.02秒的间隔。

rd=9;fl=21;smtlb=sgolayfilt(mtlb,rd,fl);子地块(2,1,1)图(t,mtlb)轴([0.2 0.22-3 2])标题(“原件”图(t,smtlb)轴([0.2 0.22 -3 2])标题(“过滤”网格)

图中包含2个轴对象。标题为Original的轴对象1包含一个类型为line的对象。标题已过滤的轴对象2包含一个类型为line的对象。

重复计算,但现在使用Kaiser窗口作为权重向量。指定形状因子 β = 38 . 绘制新的滤波信号。

kmtlb = sgolayfilt (mtlb, rd, fl, kaiser (fl, 38岁));次要情节(2,1,2)绘图(t,kmtlb)轴([0.2 0.22-3 2])保持

图中包含2个轴对象。标题为Original的轴对象1包含一个类型为line的对象。标题已过滤的轴对象2包含2个类型为line的对象。

输入参数

全部折叠

输入信号,指定为向量或矩阵。

数据类型:仅有一个的|双重的

多项式阶,指定为正整数。顺序必须小于框架如果顺序=框架- 1,滤波器不产生平滑。

数据类型:仅有一个的|双重的

帧长度,指定为正奇数整数。

数据类型:仅有一个的|双重的

加权数组,指定为长度的实正向量或矩阵框架.

数据类型:仅有一个的|双重的

要过滤的维度,指定为正整数标量。默认情况下,斯戈莱菲尔特沿第一维度运行x其大小大于1。

数据类型:仅有一个的|双重的

输出参数

全部折叠

滤波信号,作为向量或矩阵返回。

提示

Savitzky-Golay平滑滤波器通常用于“平滑”频率范围(无噪声)的噪声信号较大。它们也称为数字平滑多项式滤波器或最小二乘平滑滤波器。Savitzky-Golay滤波器在某些应用中比标准平均FIR滤波器性能更好,标准平均FIR滤波器倾向于过滤高频内容和噪声。Savitzky-Golay滤波器在保持高频信号补偿方面更有效但在拒绝噪音方面不太成功。

Savitzky-Golay滤波器是最优的,因为它们在将多项式拟合到噪声数据帧的过程中最小化了最小二乘误差。看到sgolay获取更多关于Savitzky-Golay算法的信息。

参考文献

索福克勒斯·奥法尼迪斯信号处理概论恩格尔伍德悬崖,新泽西州:普伦蒂斯大厅,1996年。

[2]谢弗,罗纳德。“什么是萨维茨基-戈莱过滤器?”(讲稿)。”IEEE信号处理杂志第4期,第28期(2011年7月):111-17页。https://doi.org/10.1109/MSP.2011.941097.

扩展能力

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

之前介绍过的R2006a