新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Matlab和Visual C++的数字滤波器设计方法

基于Matlab和Visual C++的数字滤波器设计方法

作者:时间:2014-05-13来源:网络收藏

摘要 在信号处理中,滤波的优劣直接影响信息的准确性。模拟滤波虽然快捷但不灵活,数字滤波效果虽好但复杂。所以文中提出一种以模拟滤波器为基准,设计具有相同功能而且参数可调的数字滤波器的方法。并以二阶RC无源低通滤波电路为例对此过程进行说明,与模拟滤波电路和传统的数字滤波相比,该方法不仅比传统的数字滤波算法简单快捷,而且可有效防止模拟电路中器件的寄生参数、精度、温度等的影响,使滤波更加稳定。

本文引用地址:http://www.amcfsurvey.com/article/246736.htm

随着信息科技的发展,信号处理得到了大幅推动,已经被广泛应用于雷达、通信、自动化、航空航天等领域。在信号处理系统中,输入信号通常含有各种噪声和干扰。为对信号进行准确的测量和控制,必须削弱或滤除被测信号中的噪声和干扰。一般在系统中可选用硬件滤波和软件滤波。硬件滤波又分为无源滤波和有源滤波,无源滤波是通过RC滤波器或LC滤波器等模拟滤波器进行滤波。软件滤波也称数字滤波,是通过一定的算法削弱噪声的影响。硬件滤波的优势是不需要进行复杂的程序处理,反应灵敏。而软件滤波的优势是不需要硬件的投入,而且可靠稳定。

综合两者的优势,本文提出了一种以低通二阶RC无源滤波电路为基准,用设计一个具有相同功能数字滤波器的方法即模拟电路数字化方法,以滤除信号中的高频杂波,得到了较为理想的波形。

1 模拟电路数字化方法

模拟电路数字化的过程如下,首先从硬件滤波电路出发,计算电路的传递函数H(s)。由于软件滤波的信号是离散的数字信号,所以将H(s)转换成离散域的H(z),通过编程实现对信号的滤波。如果滤波效果不理想,则对传递函数中的参数进行调整,得到具有较理想滤波效果的H(z)。为最终用编程实现,需要将H(z)反变换得时域的h(t),与信号进行卷积和运算以完成滤波。经过以上步骤,完成模拟滤波电路数字化的过程,并在平台上实现滤波。

2 二阶RC无源低通滤波电路

对于模拟电路的分析,通常采用传递函数的分析方法。电子电路往往是由若干个动态环节连在一起构成一个复杂电路。对于每个具体环节来说,都有它的输入量和输出量,而一定输入量的变化都会引起输出量的变化。根据一个环节中所进行的物理过程可以写出微分方程,它表示了该环节输出量和输入量的关系。

例如RLC振荡回路的微分方程为

 

 

输入量与输出量都是时间t的函数,用微分方程直接表示输入量与输出量时间函数之间的关系比较复杂。但利用拉氏变换把时间函数变换为s的函数以后,原函数对于时间t的微分积分就简化为s的乘除法。

在零起始条件下,一个动态环节的输出量的拉氏变换用X(s)表示,输入量的拉氏变换用F(s)表示,把

 

一种模拟滤波电路数字化方法

 

称为传递函数。

通常信号在进行放大之前,先对该信号进行滤波。以低频信号为例,使用经典的二阶RC无源滤波电路进行滤波,电路如图1所示。在接下来的部分将以此电路为例对模拟电路数字化方法进行详细的分析和讲解。

 

 

计算出该电路的传递函数H(s)如式(2)所示。其中,b=R1C1+R1C2+R2C2,a=R1R2C1C2。

 

 

3 传递函数离散化

滤波器的滤波效果与R1、R2、C1和C2等参数相关,如果取值不当会造成滤波效果不理想。对于复杂的传递函数,谐振频率和带宽不易计算,所以本文采用控制变量法。

对于多因素的问题,常常采用控制因素的方法,把多因素的问题变成多个单因素的问题。每一次只改变其中的某一个因素,而控制其余几个因素不变,从而研究被改变的这个因素对事物的影响,分别加以研究,最后再综合解决,这种方法叫控制变量法,被广泛地运用在各种科学研究之中。

得到传递函数后,就可以对信号进行滤波。由于待处理的数据是数字信号,若想仿真需将频域的传递函数转换为x域的传递函数,即将模拟滤波器转换为数字滤波器。模拟滤波器转换为数字滤波器有两种方法:脉冲响应不变法和双线性变换法。

脉冲响应不变法是一个稳定的设计,主要用于设计某些要求在时域上能模仿模拟滤波器功能的数字滤波器。这种变换法的主要特点是频率坐标的变换是线性的,即由于混叠现象,阻带边缘的衰减要比模拟滤波器稍差一些,但仍能满足技术指标的要求。脉冲响应不变法要求该模拟滤波器是带通滤波器或者低通滤波器,但这种方法在阻带没有起伏的情况下才有用。

双线性变换法映射也是一种稳定的设计,不存在混叠现象,对能够变换的滤波器类型没有限制。但这种方法也有固有缺陷:模拟频率和数字频率之间是非线性关系,它使得频率的标度弯曲,不能保持原来的模拟滤波器的相频特性;数字的频率响应与模拟的频率响应有明显的差别。一般情况下,可以通过频率的预畸变进行校正。但总体来说,双线性变换法的仿真结果比脉冲响应不变法更加理想。

由于脉冲响应不变法从s平面到z平面是多值映射,会在频域响应产生混叠失真。而双线性变换法可以把整个s平面变换到整个z平面上去,且使s的左半平面映射到z平面的单位圆内,所以设计采用双线性变换法。

双线性变化法的映射函数为

 

 

调用Matlab中的Fiher函数R1和R2调节参数、进行仿真,仿真结果如图2所示。图2(a)是未加滤波的波形,图2(b)、图2(c)、图2(d)的电阻依次增大,从图中可以看到,电阻越大,高频分量越少。

模拟信号相关文章:什么是模拟信号


滤波器相关文章:滤波器原理


滤波器相关文章:滤波器原理


c++相关文章:c++教程


低通滤波器相关文章:低通滤波器原理


电源滤波器相关文章:电源滤波器原理


数字滤波器相关文章:数字滤波器原理

上一页 1 2 下一页

关键词: Matlab Visual C++

评论


相关推荐

技术专区

关闭