移动平均滤波器是普通FIR滤波器的一种特殊情况。两个滤波器都有有限的脉冲响应。移动平均滤波器使用一系列缩放1s作为系数,而FIR滤波器系数是根据滤波器规格设计的。它们通常不是1的序列。gydF4y2Ba
使用有限滑动窗口计算流数据的移动平均值:gydF4y2Ba
NgydF4y2Ba+ 1是过滤器的长度。该算法是具有系数向量的常规FIR滤波器的特殊情况,[gydF4y2BabgydF4y2Ba0gydF4y2Ba,gydF4y2BabgydF4y2Ba1gydF4y2Ba、……gydF4y2BabgydF4y2BaNgydF4y2Ba]。gydF4y2Ba
为了计算输出,常规FIR滤波器将每个数据样本乘以一个来自[gydF4y2BabgydF4y2Ba0gydF4y2Ba,gydF4y2BabgydF4y2Ba1gydF4y2Ba、……gydF4y2BabgydF4y2BaNgydF4y2Ba[矢量并增加结果。移动平均滤波器不使用任何乘法器。该算法添加了所有数据样本并将结果乘以gydF4y2Ba1 /gydF4y2BafilterLengthgydF4y2Ba。gydF4y2Ba
比较移动平均滤波器与常规FIR滤波器的频响。设置正则FIR滤波器的系数为一个缩放1的序列。缩放因子为1/|filterLength|。gydF4y2Ba
创建一个gydF4y2Badsp。F我RFilter
系统对象™,并设置其系数为1/40。要计算移动平均线,创建一个gydF4y2Badsp。MovingAveragegydF4y2Ba
系统对象具有长度40的滑动窗口。两个滤波器都具有相同的系数。输入是高斯白噪声,其平均值为0和标准偏差1。gydF4y2Ba
过滤器= dsp。FIRFilter (gydF4y2Ba“分子”gydF4y2Ba的(40)/ 40);mvgAvg = dsp.MovingAverage (40);输入= randn (1024 1);filterOutput =过滤器(输入);mvgAvgOutput = mvgAvg(输入);gydF4y2Ba
使用fvtool可视化两个滤波器的频率响应。gydF4y2Ba
hfvt = fvtool (mvgAvgOutput filterOutput, 1, 1);传奇(hfvtgydF4y2Ba数字滤波器的gydF4y2Ba,gydF4y2Ba'移动平均过滤器'gydF4y2Ba);gydF4y2Ba
频率响应精确匹配,证明了移动平均滤波器是FIR滤波器的特例。gydF4y2Ba
为便于比较,请查看无噪声滤波器的频响。gydF4y2Ba
FVTool(过滤器);gydF4y2Ba
将滤波器的频率响应与理想过滤器的响应进行比较。您可以看到通带中的主瓣不平坦,阻带中的纹波不受限制。移动平均滤波器的频率响应与理想过滤器的频率响应不匹配。gydF4y2Ba
为了实现一个理想的FIR滤波器,改变滤波器系数的向量,不是一个缩放1的序列。滤波器的频率响应会发生变化,并趋向于向理想滤波器响应靠拢。gydF4y2Ba
根据预定义的滤波器规格设计滤波器系数。例如,设计一个归一化截止频率为0.1的等纹波FIR滤波器,通带纹波为0.5,阻带衰减为40db。使用gydF4y2Bafdesign.lowpassgydF4y2Ba
来定义过滤器规范和gydF4y2Ba设计gydF4y2Ba
设计过滤器的方法。gydF4y2Ba
fileq = fdesign.lowpass(gydF4y2Ba'n,fc,ap,ast'gydF4y2Ba现年40岁的0.1,0.5,40);filterCoeff =设计(FIReq,gydF4y2Ba“equiripple”gydF4y2Ba,gydF4y2Ba“SystemObject”gydF4y2Ba,真正的);fvtool (filterCoeff)gydF4y2Ba
滤波器的通带响应几乎是平坦的(与理想响应相似),阻带具有约束的等波纹。gydF4y2Ba