Sgolayfilt.

Savitzky-golay过滤

描述

例子

y= sgolayfilt(X命令Framelen.采用多项式阶Savitzky-Golay有限脉冲响应(FIR)平滑滤波器命令和帧长度Framelen.到矢量中的数据X。如果X是一个矩阵Sgolayfilt.在每列上运行。

例子

y= sgolayfilt(X命令Framelen.权重指定在最小二乘最小化期间使用的权重向量。

y= sgolayfilt(X命令Framelen.权重暗淡指定过滤器操作的尺寸。

例子

全部收缩

生成随机信号并使用它使用Sgolayfilt.。指定3的多项式顺序,帧长为11.绘制原始和平滑的信号。

订单= 3;Framelen = 11;lx = 34;x = randn(lx,1);sgf = sgolayfilt(x,订单,framelen);plot(x,“:”)举行情节(SGF,'.-') 传奇(“信号”'sgolay'

Sgolayfilt.函数通过将信号与中心行卷积来执行大多数过滤B.,输出斯戈拉。结果是滤波信号的稳态部分。生成并绘制这部分。

m =(Framelen-1)/ 2;b = sgolay(顺序,ramelen);稳定= conv(x,b(m + 1,:),“相同”);情节(稳定)传奇(“信号”'sgolay''稳定的'

靠近信号边缘的样品不能放置在对称窗口的中心,并且必须以不同的方式处理。

要确定启动瞬态,矩阵乘以第一个(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''稳定的''完全的')举行

在最小化中增加权重打破了对称B.并需要适当的解决方案需要额外的步骤。

加载采样的语音信号 F S. = 7418 赫兹 。该文件包含一个录制的女性语音,说明“matlab®”这个词。

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

通过将多项式订单9的Savitzky-Golay滤波器应用于长度21的数据帧来平滑信号。绘制原始和过滤的信号。放大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])标题('过滤') 网格

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

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

输入参数

全部收缩

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

数据类型:单身的|双倍的

多项式阶,指定为正整数。命令必须小于Framelen.。如果命令=Framelen.- 1,滤波器不产生平滑。

数据类型:单身的|双倍的

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

数据类型:单身的|双倍的

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

数据类型:单身的|双倍的

将尺寸过滤,指定为正整数标量。默认情况下,Sgolayfilt.沿着第一个维度操作X谁的大小大于1。

数据类型:单身的|双倍的

输出参数

全部收缩

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

提示

Savitzky-Golay平滑过滤器通常用于“平滑”噪声信号,其频率跨度(没有噪声)大。它们也称为数字平滑多项式过滤器或最小二乘平滑过滤器。Savitzky-Golay过滤器在某些应用中更好地执行比标准平均FIR滤波器更好,这倾向于过滤高频内容以及噪声。Savitzky-Golay滤波器在保留高频信号组件时更有效,但在拒绝噪音时不太成功。

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

参考文献

索福克勒斯·奥法尼迪斯信号处理概论。Englewood Cliffs,NJ:Prentice Hall,1996。

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

扩展能力

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

之前介绍过的R2006a