主要内容

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);山东= sgolayfilt (x,秩序,framelen);情节(x,':') 抓住情节(山东,“。”)传说('信号'“sgolay”

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象代表信号,sgolay。

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

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

图中包含一个轴对象。轴对象包含3个类型线的对象。这些对象代表信号,Sgolay,稳定。

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

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

YBEG = B(1:m,:) * x(1:framelen);

要确定终端瞬态,矩阵乘以最终(framelen-1) / 2行的行B在决赛中framelen信号的样本。

Yend = B(Framelen-M + 1:Framelen,:) * x(Lx-Framelen + 1:Lx);

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

cmplt =稳定;Cmplt(1:m)= ybeg;cmplt(lx-m + 1:lx)= yend;plot(cmplt)图例('信号'“sgolay”“稳定”“完成”) 抓住离开

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

向最小化添加权重打破对称性B需要额外的步骤才能找到合适的解决方案。

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

负载MTLB.t =(0:长度(mtlb)-1)/ fs;

对长度为21的数据帧应用多项式9阶萨维茨基-戈莱滤波器平滑信号。绘制原始和过滤后的信号。放大0.02秒的间隔。

rd = 9;fl = 21;smtlb = sgolayfilt (mtlb, rd, fl);子图(2,1,1)plot(t,mtlb) axis([0.2 0.22 -3 2]) title(“原始”)网格子图(2,1,2)绘图(T,SMTLB)轴([0.2 0.22 -3 2])标题(“过滤”) 网格

图包含2个轴对象。轴对象1具有标题原稿包含类型线的对象。带有标题过滤的轴对象2包含类型线的对象。

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

KMTLB = SGOLAYFILT(MTLB,RD,FL,KAISER(FL,38));子图(2,1,2)持有绘制(t,kmtlb)轴([0.2 0.22 -3 2])保持离开

图包含2个轴对象。轴对象1具有标题原稿包含类型线的对象。带有标题过滤的轴对象2包含2个类型的物体。

输入参数

全部收缩

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

数据类型:|双倍的

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

数据类型:|双倍的

帧长度,指定为正奇数。

数据类型:|双倍的

加权阵列,指定为实际正矢量或长度矩阵framelen

数据类型:|双倍的

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

数据类型:|双倍的

输出参数

全部收缩

过滤后的信号,以向量或矩阵的形式返回。

提示

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

Savitzky-Golay滤波器在意义上是最佳的,使得它们最小化拟合多项式对噪声数据帧的最小二乘误差。看斯戈拉有关Savitzky-Golay算法的更多信息。

参考

[1] Orfanidis,Sophocles J.信号处理简介.Englewood Cliffs, NJ: Prentice Hall, 1996。

[2] Schafer,Ronald。“什么是savitzky-golay过滤器?[演讲笔记]。”IEEE信号处理杂志28日,没有。4(2011年7月):111-17。https://doi.org/10.1109/MSP.2011.941097。

扩展功能

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

在R2006A之前介绍