IIR滤波器零相位数字滤波器设计及其应用

时间:2010-08-12来源:网络

  (3) 对原输入序列x(n)的首尾进行扩展,在x(n)的前面添加3N个数,在后面添加3N个数,扩展后的序列记为x′(n),n=0,1,…,P+6N。

  x′(n)=2x(0)-x(3N-n)

  x(n-3N)

  2x(P)-x(P-1-(n-P-3N-n))

  n<3N

  3Nn<P+3N

  P+3NnP+6N(4)

  (4) 进行正向滤波:先用b,a和x′(n)调用DiffFilter(b,a,x)函数,计算x′(n)通过

  H(z)=∑Mm=0b(m)z-m/(1+∑Mm=1a(m)z-m)(5)

  的输出y′(n),然后生成一长度为P+6N+1的单位脉冲信号h(n),用z,a和h(n)调用DiffFilter(b,a,x)函数,计算h(n)通过

  H(z)=∑M-1m=0y′(0)e(m)z-m/(1+∑Mm=1a(m)z-m)(6)

  的输出y′(n),并记y(n)=y′(n)+y″(n)。

  (5) 进行反向滤波:将正向滤波结果反转,记x′(n)=y(P+6N-n),重复步骤4°,得到反向滤波后的结果。

  (6) 将反向滤波的结果反转,并删除首尾的扩展部分,即可得到最后的滤波结果。

  3.2零相位数字滤波的实现

  Borland公司推出的Delphi编程语言,具有合理的单元化结构、优化的编译环境,开发速度快、编程效率高。在实现同样功能的情况下与其它语言相比,不仅编写的代码量少、程序可移植性强,而且还有许多优秀的组件包可供使用。最为方便的是可以使用动态数组,随时能够改变数组的长度,这一点非常适合数字信号处理。

  作者利用Delphi7编写了利用双线性Z变换法设计Butterworth型IIR滤波器和利用窗函数法设计FIR滤波器,以及差分数字滤波算法和零相位数字滤波算法应用程序,并作为集成测试软件平台的一个虚拟仪器。其中零相位数字滤波算法程序设计流程如图6所示。

  图6零相位数字滤波算法的流程图

1 2 3 4 5

关键词: 虚拟仪器 信号处理 零相位 数字滤波

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版