100分数数字滤波器的MATLAB实现或设计
基于MATLAB信号处理工具箱的数字滤波器设计与仿真
摘要:传统数字滤波器设计过程复杂,计算工作量大,滤波器特性难以调整,影响了其应用。介绍了一种利用MATLAB信号处理工具箱快速、有效地设计软件构成的常规数字滤波器的设计方法。给出了用MATLAB语言编程和用信号处理工具箱中的FDATool工具进行界面设计的详细步骤。利用MATLAB设计一个滤波器,可以将设计要求与滤波器特性进行对比,随时调整参数,直观简单,大大减少了工作量,有利于滤波器设计的优化。本文还介绍了如何在MATLAB环境下利用仿真软件Simulink对所设计的滤波器进行仿真。
关键词:数字滤波器MATLAB FIR IIR
简介:
在电力系统的微机保护和二次控制中,很多信号的处理和分析都是建立在对正弦基波和一些整次谐波的分析基础上的,系统的电压电流信号(尤其是故障暂态过程)中夹杂着各种复杂的分量,因此滤波器一直是电力系统二次设备的关键部件。目前,数字滤波器主要用于微机保护和二次信号处理软件中。传统的数字滤波器设计使用复杂的公式计算,改变参数后需要重新计算,设计滤波器尤其是高阶滤波器时工作量很大。利用MATLAB信号处理工具箱,可以快速有效地实现数字滤波器的设计和仿真。
1数字滤波器与传统设计方法
数字滤波器可以理解为一种计算程序或算法,它将代表输入信号的数字时间序列转换为代表输出信号的数字时间序列,并在转换过程中以预定的形式改变信号。数字滤波器有很多种。根据数字滤波器冲激响应的时域特性,数字滤波器可以分为两类,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
IIR数字滤波器具有无限冲激响应,与模拟滤波器相匹配。因此,IIR滤波器的设计可以在模拟滤波器设计的基础上进一步改造。FIR数字滤波器的单位冲激响应是一个有限序列。它的设计问题实质上是确定能满足所需传递序列或脉冲响应的常数。设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法。
在滤波器的实际设计中,整个过程的计算量非常大。例如,用窗函数法2设计M阶FIR低通滤波器时,应根据公式(1)计算理想低通滤波器的单位冲激响应序列,然后根据公式(2)计算M个滤波器系数。当滤波器的阶数比较高时,计算量比较大,在设计过程中改变参数或滤波器类型时需要重新计算。
(1)
(2)
设计完成后,要对设计的滤波器进行频响校核,计算量也很大,要得到幅频相频响应特性。我们通常设计的数字滤波器的阶数和类型并不一定给定,往往是根据设计要求和滤波效果进行调整,以达到设计的最优化。在这种情况下,滤波器的设计需要大量复杂的操作,单纯通过公式计算和简单的编程很难在短时间内完成设计。利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效地设计出数字滤波器,大大简化了计算,直观简单。
2数字滤波器的MATLAB设计
2.1 FDATool接口设计
介绍2.1.1 FDATool
过滤器设计与开发。分析工具)是MATLAB信号处理工具箱中专门的滤波器设计分析工具,在MATLAB6.0以上版本中专门增加了滤波器设计工具箱,FDATool几乎可以设计所有基本的常规滤波器,包括FIR和IIR的各种设计方法。操作简单,方便灵活。
FDATool的界面分为两部分,一部分是设计滤镜,在界面的下半部分用来设置滤镜的设计参数,另一部分是特性区,在界面的上半部分用来显示滤镜的各种特性。设计滤波器部分主要分为:
滤波器类型选项,包括低通、高通、高通、带通、带阻和特殊FIR滤波器。
设计方法选择,包括IIR滤波器的巴特沃兹法、切比雪夫I型法、切比雪夫II型法、FIR滤波器的椭圆法和等波纹法、最小二乘法和窗口法。
过滤器顺序选项,定义过滤器的顺序,包括指定顺序和最小顺序。按照指定顺序填写要设计的过滤器的顺序(n阶过滤器,指定顺序= n-1)。如果选择最小阶数,MATLAB将根据所选滤波器类型自动使用最小阶数。
频率规格选项,可以详细定义频段参数,包括采样频率Fs和频段截止频率。其特定选项由“过滤器类型”选项和“设计方法”选项决定。比如带通滤波器需要定义Fstop1(下阻带频率)、Fpass1(下阻带频率)、Fpass2(上阻带频率)、Fstop2(上阻带频率),而低通滤波器只需要定义fs。用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数决定的,所以只需要定义通带截止频率,而不需要定义阻带参数。
幅度规格选项,您可以定义幅度衰减。例如,在设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅度衰减)、Wpass(通带内的幅度衰减)和Wstop2(频率Fstop2处的幅度衰减)。当采用窗函数设计时,通带截止频率处的幅度衰减固定在6db,因此不需要定义。
窗口规格选项,可以在选择窗口功能设计时定义,包含各种窗口功能。
2.1.2带通滤波器设计示例
本文将以一个FIR滤波器的设计为例,说明如何利用MATLAB设计数字滤波器:向小电流接地系统注入一个83.3Hz的正弦信号,并对其进行跟踪。需要设计一个带通数字滤波器来滤除工频和全谐波,从而将注入信号从非常复杂的信号中分离出来。参数要求:96阶FIR数字滤波器,采样频率1000Hz,采用汉明窗函数设计。
在这个例子中,首先,在滤波器类型中选择带通;在设计方法选项中选择FIR窗(FIR滤波器窗函数法),然后选择汉明;在窗口规格选项中;在指定的筛选顺序项中指定Order = 95;因为窗函数法,只要给定下通带截止频率Fc1和上通带截止频率Fc2,选择fc1 = 70hz,Fc2=84Hz。设置完成后,点击设计滤波器,得到设计的FIR滤波器。通过菜单选项分析,可以看到所设计滤波器在特征区域的幅频响应、相频响应、零极点配置和滤波系数。设计完成后,结果保存为1.fda文件。
在设计过程中,可以将滤波器的幅频相频特性与设计要求进行比较,随时调整参数和滤波器类型。
从而获得最佳效果。其他类型的FIR滤波器和IIR滤波器也可以使用FDATool设计。
图1滤波器幅频和相频响应(特征区域)
图1滤波器的幅度响应和相位响应
2.2编程方法
在MATLAB中,有一个相应的函数3来计算各种滤波器设计的幅度响应,可用于对滤波器进行编程。
上例中的带通滤波器可以编程为:
c = 95%定义了96阶的滤波器阶数。
w 1 = 2 * pi * fc 1/fs;
w2 = 2 * pi * fc2/fs;%参数转换,将模拟滤波器的技术指标转换为数字滤波器的技术指标。
window = hamming(c+1);%使用汉明窗函数
h=fir1(c,[w1/pi w2/pi],窗口);%使用带标准响应的窗口设计函数fir1。
freqz(h,1,512);%数字滤波器频率响应
在MATLAB环境下运行程序,可以得到幅频相频响应曲线和滤波器系数h。限于篇幅,源程序这里就不详细列举了。
3 Simulink仿真
本文通过调用Simulink中的功能模块,构建了数字滤波器的仿真框图。在仿真过程中,可以双击各个功能模块,随时改变参数,得到不同状态下的仿真结果。比如构造含有基波的原始信号,通过Simulink环境下的数字滤波器设计模块导入2.1.2中FDATool设计的滤波器文件1.fda。仿真图和滤波效果图如图2所示。
图2 Simulink仿真图和滤波效果图
图2模拟连接和波形
可以看出,经过离散采样和数字滤波后,分离出了83.3Hz (scope1)的频率成分。之所以选择上面叠加的信号作为原始信号,是因为在实际工作中,经过差分滤波的信号还要进一步带通滤波,信号的成分基本相同,能够反映实际情况。本例设计的滤波器已经在实际工作中得到应用,取得了良好的效果。
4结论
基于MATLAB信号处理工具箱的数字滤波器设计方法,利用MATLAB强大的计算功能,可以快速有效地设计出软件构成的常规数字滤波器,方便快捷,大大减少了工作量。在设计过程中,可以随时比较滤波器特性,改变参数,实现滤波器设计的最优化。利用MATLAB设计数字滤波器在电力系统二次信号处理软件和微机保护中有着广泛的应用前景。
参考
1.陈德述。计算机继电保护原理与技术。北京:水利电力出版社,1992。
2.蒋志凯。数字滤波与卡尔曼滤波M北京:中国科学技术出版社,1993
3.楼顺天,李博涵。基于MATLAB的系统分析与设计-信号处理Xi:西安电子科技大学出版社,1998。
4.胡光枢。数字信号处理:理论、算法与实现m .北京:清华大学出版社,1997。
5.孟一正。MATLAB5。x应用与技巧M北京:科学出版社,1999。
由于篇幅所限,图片省略。请参考原文:
/sort/084/2008-4/10/181402588 . html
仅供参考,请大家自己学习。
希望对你有帮助。