主要内容

sgolayfilt

Savitzky-Golay过滤

描述

例子

y= sgolayfilt (x订单framelen采用多项式阶的Savitzky-Golay有限脉冲响应平滑滤波器订单和帧长度framelen到向量中的数据x.如果x是矩阵吗sgolayfilt对每一列进行操作。

例子

y= sgolayfilt (x订单framelen权重指定在最小二乘最小化过程中使用的权重向量。

y= sgolayfilt (x订单framelen权重昏暗的指定过滤器操作的沿维度。

例子

全部折叠

产生一个随机信号,并平滑它使用sgolayfilt.指定多项式阶数为3,帧长度为11。绘制原始信号和平滑信号。

订单= 3;framelen = 11;lx = 34;x = randn (lx, 1);山东= sgolayfilt (x,秩序,framelen);情节(x,“:”)举行情节(山东,“。”)传说(“信号”“sgolay”

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些物体代表信号,斯戈莱。

sgolayfilt函数通过将信号与的中心行进行卷积来完成大部分的滤波B,的输出sgolay.结果是经过滤波的信号的稳态部分。生成并绘制此部分。

m = (framelen-1) / 2;B = sgolay(顺序,framelen);稳定= conv (x、B (m + 1,:)“相同”);情节(稳定)传说(“信号”“sgolay”“稳定”

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

靠近信号边缘的样本不能放在对称窗口的中心,必须区别对待。

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

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

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

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

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

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

图中包含一个axes对象。axis对象包含4个line类型的对象。这些物体代表信号、信号、稳定、完整。

在最小化的基础上增加权重打破了对称性B需要额外的步骤才能得到正确的解。

加载采样的语音信号 F 年代 7418 赫兹 .文件中有一段女声的录音说的是“MATLAB®”。

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

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

rd = 9;fl = 21;smtlb = sgolayfilt (mtlb, rd, fl);Subplot (2,1,1) plot(t,mtlb)轴([0.2 0.22 -3 2])title(“原始”)网格subplot(2,1,2) plot(t,smtlb)轴([0.2 0.22 -3 2])title(“过滤”网格)

图中包含2个轴对象。标题为Original的axis对象1包含一个类型为line的对象。带有标题过滤的Axes对象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的axis对象1包含一个类型为line的对象。标题过滤的Axes对象2包含两个类型为line的对象。

输入参数

全部折叠

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

数据类型:|

多项式顺序,指定为正整数。订单必须小于framelen.如果订单framelen- 1,滤波器不产生平滑。

数据类型:|

帧长度,指定为正奇数。

数据类型:|

加权数组,指定为实正向量或长度矩阵framelen

数据类型:|

要筛选的维度,指定为正整数标量。默认情况下,sgolayfilt的第一个维度x其大小大于1。

数据类型:|

输出参数

全部折叠

经过过滤的信号,作为向量或矩阵返回。

提示

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

萨维茨基-戈雷滤波器是最优的,因为它们在拟合多项式对噪声数据帧的最小二乘误差是最小的。看到sgolay获取更多关于Savitzky-Golay算法的信息。

参考文献

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

[2]谢弗,罗纳德。“什么是Savitzky-Golay滤波器?”(讲稿)。”IEEE信号处理杂志28日,没有。4(2011年7月):111-17。https://doi.org/10.1109/MSP.2011.941097。

扩展功能

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

版本历史

之前介绍过的R2006a

Baidu
map