基于MATLAB在线数字滤波器设计与误差分析

时间:2023-06-07 20:18:03 教案设计 来源:网友投稿

摘要:为了获取高精度有效信号在信号检测系统中,常常需要进行滤波,将设置频率以外的信号彻底清除,数字滤波器广泛应用于各种测量系统。基于MATLAB的在线数字滤波器设计过程简单易行,不仅具有较高的精度和稳定性,还有运算速度快,延迟小的特点,可以满足测量要求。但在实际应用时如果采样数据长度选择不当,输出波形会出现失真。通过实验分析了采样数据长度与波形失真的关系,在使用时要兼顾误差与延迟,保证数字滤波测量精度。

关键词:MATLAB;数字滤波器;在线测量;误差分析;信号失真

中图分类号:TP302 文献标识码:A 文章编号:1009-3044(2014)26-6242-04

Abstract: In order to acquire high quality signal in the sensing and data acquisition system, it is needed to perform filtering to get rid of the frequency band which isn"t wanted. As a result, digital filters are widely used in all kinds of measuring systems. The real-time online digital filter that based on MATLAB is easy to design. It also possesses high accuracy and stability, fast speed and low delay, which means it satisfy the demands of most measuring system. However, the distortion occurs when the length of sample string is too short in the application. This work analyzes the relation between sample string length and the distortion by the experiments and tries to reach a balance between errors and delay to ensure the high quality of filter performance.

Key words: MATLAB; digital filter; online measuring; error analyze; signal distortion

1 概述

在信号测量与采编系统中,为了提高采编系统的信噪比,经常使用滤波器对采集的信号进行滤波,在某些情况下,测量系统在信号处理时要求信号精度高、信号识别率高,使得系统对滤波器的性能提出了很高的要求,比如要求滤波器满足通带不平度小、带外衰减快、系统延迟低等。

MATLAB,又称矩阵实验室,是美国MathWorks公司出品的一款功能强大的数学软件,可以用于数据分析、算法研发和数值计算,在科学研究以及工程上应用十分广泛。然而MATLAB虽然功能强大,但其本身的设计主要是面向离线的数据分析,所以鲜有人尝试利用MATLAB进行低延迟,高性能的在线滤波。该文以脑电信号处理中的theta波(4~12Hz)为例,利用MATLAB中的数字滤波器实现实时滤波。

2 数字滤波器设计

2.1 滤波器类型选择

工程上常用的滤波器有四种:切比雪夫I型滤波器、切比雪夫II型滤波器、巴特沃兹滤波器和椭圆滤波器。脑中枢神经信号Theta波是4-10Hz的低频信号,需用带通滤波器,四种滤波器作为theta波滤波器时的频域特性,见图1所示。

为满足通带不平度小、带外衰减快,从图中我们可以看出,切比雪夫I型滤波器通带增益为0,阻带衰减幅度最大,是最佳的theta波滤波器的选择。

2.2 滤波器参数设计

在MATLAB信号处理工具箱提供了几个直接设计IIR数字滤波器的函数,可以直接调用。设计契比雪夫I型IIR滤波器可使用cheby1函数,cheby1函数可设计低通、高通、带通和带阻契比雪夫I型滤IIR波器,其通带内为等波纹,阻带内为单调。cheby1(n,Wn,Rp)函数要确定滤波器的最小阶数n、截止频率Wn 、通带波纹系数Rp。滤波器的频域响应并不是平滑的,会有一定波动,通带波动Rp即描述这种波动的参数,其意义为滤波器频域响应曲线在通带上均值与极值的差,即波动的幅度。theta波带通频率为4~12Hz,需要设定滤波器阶数n;通带波动R。滤波器阶数n越大,其通带与阻带的增益差就越大,滤波效果就越好,但相对地,运算时间也会越长。这里n选取一个适当的中间值5,由于为带通滤波器,其实际阶数为2n即10,一个10阶滤波器对于实时测量系统来说是比较合适的,不会产生太大的运算量,同时也可以保证较好的滤波效果。Rp取不同值,滤波器的频域特性不同,图2为其频域响应在通带附近局部放大图。从图中可以看出Rp在0.18和0.19之间存在一个阈值,使滤波器在通带上的增益关于Rp有一个突变,而随着Rp增大,响应曲线在通带上的波动也越来越大,因此选取0.19作为Rp的值。

2.3 在线滤波的失真分析

理想情况下,采样信号的长度无限长,经傅立叶变换后得到有限的傅立叶级数,而在实际测量中,常将数据进行分段采样,有限长度的信号经过傅立叶变换后会得到一个无穷的傅立叶级数,致使其频域成分会产生一定的失真。所以在信号采集时,如果信号分段的长度过短,经滤波后,频域信号会出现较严重的失真,实验发现滤波的信号分段越短,失真越厉害,如图4所示,实验过程如下所述。

首先产生一个随机数组,其中每个点都为随机数,将此随机数组作为原始的采样信号。然后分别通过以下两种方法得到两个滤波后的信号:一是将整个数组采集下来先滤波后截取一段信号;二是先采集同样长度的一组信号后滤波。最后将这两组滤波后的信号进行比对,找出它们不相等点的个数。从理论分析第一组信号没有失真或失真较小。滤波器设置为:切比雪夫I型带通滤波器,通带为4~12Hz,Rp=0.18,采样频率设定为2000赫兹。每组实验重复1000次,对其不相等点的个数取平均,用来表示失真程度,取三位有效数字,实验结果见表1。随机产生的原始信号长度为100000,即相当于50秒的采样信号。每一数组的每次重复即代表随机生成新的模拟信号和新的截取位置,可以认为该实验结果能够反映信号处理的真实情况。从表中可以看出,在信号长度为5000时,绝对的失真程度开始基本保持不变,而失真所占截取信号的比例开始减小。

2.4 在线滤波的延迟分析

对于一个实时工作的系统来说,延迟的大小是非常重要的一个指标。实时滤波造成的延迟主要是运算延迟,运算延迟与单次处理数据的长度成正比。为方便起见,滤波器设置为:theta波滤波器(4~12Hz),采样率2k,阶数为5,Rp为0.18。通过实验1000次,实验结果如图5所示。

其中横坐标为数据长度(采样点数),纵坐标为延迟时间(单位毫秒)。滤波数据为指定长度的随机数列。其中,延迟时间为1000次实验结果的平均值,每次实验均使用一个新的随机数列。从图中可明显地看出,运算延迟和数据大小是呈线性关系,不存在“最佳”单次滤波数据长度。要确定滤波的数据采集长度,应该结合实际应用要求和运算条件来判断。

3 结论

随着科学技术的不断发展,在传感器检测与数据采集系统中,为了获取高精度有效信号,一方面需要提高数据采集系统的信噪比,另一方面需要设置相应带宽,将设置频率以外的信号彻底清除。基于MATLAB的在线滤波器设计简单,使用方便。但在实际应用时如果采样数据长度截取的太短,会导致输出波形失真;如果采样数据长度截取的太长,加大运算量,会产生延迟,因此,在使用时要兼顾误差与延迟,保证数字滤波器的测量精度。

参考文献:

[1] 宋寿鹏.数字滤波器设计及工程应用[M].镇江:江苏大学出版社,2009.

[2] 王建军,主译.神经科学-探索脑[M].2版.北京:高等教育出版社,2011.

[3] 张志涌.MATLAB教程[M].北京:北京航空航天大学出版社,2010.

[4] 高会生,主译.MATLAB实用教程[M]2版.北京:电子工业出版社,2010.

[5] 杜勇.数字滤波器的MATLAB与FPGA实现[M].北京:电子工业出版社,2012.

[6] 陈怀琛.数字信号处理教程[M].北京:电子工业出版社,2008.

[7] 胡顺华.一种基于Chebyshev函数的新型带通滤波器设计方法[J].电讯技术,2010,50(7):123-124.

[8] 无名氏.基于matlab 数字滤波器的设计[EB/OL].http://wenku.baidu.com/view/5beb2798d5b bfd0a7956738c.html.

推荐访问:在线 误差 分析 设计 数字滤波器