移动平均滤波器是常规FIR滤波器的特殊情况。两个过滤器都有有限的脉冲响应。移动平均滤波器使用一系列缩放1S作为系数,而FIR滤波器系数是基于过滤器规格设计的。它们通常不是1s的序列。GydF4y2Ba
使用有限滑动窗口计算流数据的移动平均值:GydF4y2Ba
NGydF4y2Ba+ 1是过滤器的长度。该算法是具有系数向量的常规FIR滤波器的特殊情况,[GydF4y2BaB.GydF4y2Ba0.GydF4y2Ba那GydF4y2BaB.GydF4y2Ba1GydF4y2Ba,......,GydF4y2BaB.GydF4y2BaNGydF4y2Ba]。GydF4y2Ba
为了计算输出,常规FIR滤波器将每个数据样本乘以从[中的系数GydF4y2BaB.GydF4y2Ba0.GydF4y2Ba那GydF4y2BaB.GydF4y2Ba1GydF4y2Ba,......,GydF4y2BaB.GydF4y2BaNGydF4y2Ba[矢量并增加结果。移动平均滤波器不使用任何乘法器。该算法添加了所有数据样本并将结果乘以GydF4y2Ba1 /GydF4y2Bafilterlength.GydF4y2Ba。GydF4y2Ba
将移动平均滤波器的频率响应与常规FIR滤波器的频率响应进行比较。将常规FIR滤波器的系数设置为缩放1的序列。缩放系数是1 / |滤波器长度。GydF4y2Ba
创建一个GydF4y2Badsp.firfilter.GydF4y2Ba
System Object™并将其系数设置为1/40。要计算移动平均值,请创建一个GydF4y2Badsp.movingverage.GydF4y2Ba
系统对象具有长度40的滑动窗口。两个滤波器都具有相同的系数。输入是高斯白噪声,其平均值为0和标准偏差1。GydF4y2Ba
filter = dsp.firfilter(GydF4y2Ba'分子'GydF4y2Ba,(1,40)/ 40);mvgavg = dsp.movingaverage(40);输入= RANDN(1024,1);filteroutput = filter(输入);mvgavgoutput = mvgavg(输入);GydF4y2Ba
使用FVTool可视化两个过滤器的频率响应。GydF4y2Ba
hfvt = fvtool(filteroutput,1,mvgavgoutput,1);传奇(HFVT,GydF4y2Ba'fir filter'GydF4y2Ba那GydF4y2Ba'移动平均过滤器'GydF4y2Ba);GydF4y2Ba
频率响应完全匹配,这证明了移动平均滤波器是FIR滤波器的特殊情况。GydF4y2Ba
为了比较,查看过滤器的频率响应而没有噪声。GydF4y2Ba
FVTool(过滤器);GydF4y2Ba
将滤波器的频率响应与理想过滤器的响应进行比较。您可以看到通带中的主瓣不平坦,阻带中的纹波不受限制。移动平均滤波器的频率响应与理想过滤器的频率响应不匹配。GydF4y2Ba
为了实现理想的FIR滤波器,将滤波器系数更改为不是缩放1S序列的向量。滤波器的频率响应改变并倾向于更接近理想的滤波器响应。GydF4y2Ba
根据预定义的滤波器规格设计滤波器系数。例如,设计具有0.1的归一化截止频率的相同的FIR滤波器,电带纹波为0.5,并且停止衰减为40dB。用GydF4y2Bafdesign.lowpass.GydF4y2Ba
定义过滤器规格和GydF4y2Ba设计GydF4y2Ba
设计过滤器的方法。GydF4y2Ba
fileq = fdesign.lowpass(GydF4y2Ba'n,fc,ap,ast'GydF4y2Ba,40.0.1,0.5,40);Filtercoeff = Design(FireQ,GydF4y2Ba'平静'GydF4y2Ba那GydF4y2Ba'systemobject'GydF4y2Ba,真的);FVTool(FilterCoeff)GydF4y2Ba
过滤器在通带中的响应几乎是扁平的(类似于理想响应),并且阻带具有约束平衡。GydF4y2Ba