1、基于Matlab的数字滤波器设计1.数字滤波器概述 1.1数字滤波器的分类 1.2 数字滤波器的表示方法 2.数字滤波器的优点3 Matlab中的数字滤波器设计 3.1软件实现方式 3.2硬件实现方式 1数字滤波器概述 数字滤波器不用物理元器件构成,而是按照某种算法编写一段程序或模块,对数字信号进行处理加工,从而达到滤波的要求。数字滤波器是实现滤波过程的一种数字信号处理系统,具有离散时间系统的基本特征。1.1数字滤波器的分类按结构特点分 按冲击响应分 按频率特性分 数字滤波器 按频率特性分数字滤波器 低通滤波器高通滤波器带通滤波器带阻滤波器 按冲击响应分数字滤波器无限长冲击响应滤波器(IIR)
2、:对单位冲激的输入信号的响应为无限长序列 有限长冲击响应滤波器(FIR):对单位冲激的输入信号的响应为有限长序列 按结构特点分数字滤波器数字滤波器 递归型滤波器 非递归型滤波器 无限长冲击响应滤波器 有限长冲击响应滤波器1.2 数字滤波器的表示方法 1.差分方式表示 MiNiiiinybinxany01)()()(其中输入信号为x(t),输出信号为y(t),ai,bi为常数2.传递函数表示 NiiiMiiizbzazXzYzH101)()()(在差分方程的基础上,方程取Z变换,化简可得3.单位响应冲击响应输入单位冲击时间序列的滤波器输出序列)()(nTnh任意输入信号时的数字滤波器输出kknx
3、nhnhnkxnhnxknhkxny)(*)()()()(*)()()()(4.频率特性表示频率特性是数字滤波器对正弦输入序列的响应 其中,H(jwTs)和频率f构成幅频特性,(w)和频率f构成相频特性。)(j)j()()j(jeTHzHHsezswT2 数字滤波器的优点 性能稳定 高度的灵活性 无阻抗匹配问题 方便的做到分时复用 3 Matlab中的数字滤波器设计 有两种方法:1基于滤波程序和算法的软件实现方式。2基于数字部件模块的硬件实现方式。适用于知道需要滤除的谐波的次数适用于硬件搭建模型 软件实现方式以简单的减法滤波器作为介绍:减法滤波器差分方程为 1),()()(kknxnxny其幅
4、频特性方程为2sin2)(sTjTkeHs 根据想消除的谐波次数,来确定参数的值。可以根据下式确定 pmTfks1式中,为1,2,3。这种方法虽然可以达到滤波效果,但是需要人为计算,在编写滤波程序之前,需要知道滤波器的差分方程,较为麻烦。例 假设一个系统的采样频率为1200Hz,要滤除直流分量和4,8,12次谐波。分析:由于奈奎斯特采样定理的限制,最多只能消除12次谐波,当采用减法滤波器时,经过计算所需差分方程为)6()()(nxnxny在Matlab的M脚本下编写滤波函数,绘出幅频特性。%设置减法滤波器的传递函数系数设置减法滤波器的传递函数系数 a1=1,b1=1 0 0 0 0 0-1;f
5、=0:1:600;h1=abs(freqz(b1,a1,f,1200);%由传递函数系数确定传递函数的幅频特性由传递函数系数确定传递函数的幅频特性 H1=h1/max(h1);%绘出幅频特性绘出幅频特性 plot(f,H1);xlabel(f/Hz);ylabel(H1);010020030040050060000.20.40.60.81f/HzH1幅频特性叠加直流分量和叠加直流分量和4、8次谐波次谐波,然后滤波,然后滤波 N=24;t1=(0:0.02/N:0.04);m=size(t1);%基波电压基波电压 va=100*sin(2*pi*50*t1);%叠加直流分量和叠加直流分量和4,8
6、次谐波分量次谐波分量 va1=35+100*sin(2*pi*50*t1)+30*sin(4*pi*100*t1)+10*sin(8*pi*100*t1);%采用减法滤波器滤掉采用减法滤波器滤掉va1中的直流分量和中的直流分量和4,8次次谐波分量谐波分量 Y=zeros(1,6);for jj=7:m(2)Y(jj)=(va1(jj)-va1(jj-6)/1.414;end%输出波形输出波形,每周期采样每周期采样24个点,一个点相当于个点,一个点相当于15度,度,6个点为个点为90度,移项度,移项90度的波形和原始波形叠度的波形和原始波形叠加后波形幅值会增大倍,为了便于比较,叠加后加后波形幅值
7、会增大倍,为了便于比较,叠加后的波形幅值除以。的波形幅值除以。plot(t1,va,-ro,t1,va1,-bs,t1,Y,-g*);xlabel(t/s);ylabel(v/v);grid on00.0050.010.0150.020.0250.030.0350.04-150-100-50050100150200t/sv/v 基波叠加谐波的合成波滤波后的波形硬件实现方式 在Matlab中,有现成的滤波器模块,使用时只需设置相应参数,使用方便。在Matlab中Simulink命令下Single Processing BlocksetFilteringFilter Designs目录下有Digi
8、tal Filter Design模块可以设计用户所需要的数字滤波器。参数设计区特性区滤波器转换(TransForm Filter)实现模型(Realize Model)零极点编辑器(Pole-zero Editor)导入滤波器(Import Filter)设计滤波器(Design Filter)Response type(滤波器类型)选项,包括lowpass(低通)、highpass(高通)、bandpass(带通)、bandstop(带阻)和特殊的FIR滤波器 Design method(设计方法)选项,包括IIR滤波器的butterworth(巴特沃思)法、chebyshev type
9、i(切比雪夫i型)法、chebyshev type ii(切比雪夫ii型)法、elliptic(椭圆滤波器)法和FIR滤波器的equiripple法、least-squares(最小乘方)法、window(窗函数)法 Filter order(滤波器阶数)选项,定义滤波器的阶数,包括specify order(指定阶数)和minimum order(最小阶数)。在specify order中填入所要设计的滤波器的阶数(n阶滤波器,specify ordern-1),如果选择minimum order则matlab根据所选择的滤波器类型自动使用最小阶数。Frenquency specificat
10、ions选项,可以详细定义频带的各参数,包括采样频率fs和频带的截止频率。它的具体选项由filter type选项和design method选项决定,bandpass(带通)滤波器需要定义fstop1(下阻带截止频率)、fpass1(通带下限截止频率)、fpass2(通带上限截止频率)、fstop2(上阻带截止频率),而lowpass(低通)滤波器只需要定义fstop1、fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。Magnitude specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器
11、时,可以定义wstop1(频率fstop1处的幅值衰减)、wpass(通带范围内的幅值衰减)、wstop2(频率fstop2处的幅值衰减)。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。为了更好的说明各种设计方法之间的差别,采用控制变量的方法,在其他条件不变的前提下,分别采用窗函数法(凯泽窗、汉宁窗、汉明窗、布莱克窗窗)、波纹逼近法、最小乘方法对FIR数字低通滤波器进行设计并比较,最终得出结论,说明各种设计方法的适用情况。97阶凯泽窗97阶汉明窗97阶汉宁窗97阶布莱克窗波纹逼近法最小乘方法结论 在同样滤波器阶数情况下,窗函数设计法设计方法相对简便,通带内稳定性高,过
12、渡带宽度随窗函数种类变化,其中汉宁窗、汉明窗、布莱克曼窗函数法的过渡带相比凯泽窗较窄,但凯泽窗最小阻带衰减最高;波纹逼近法设计出的滤波器相对其他几种方法通带内不够平稳;最小乘方法相比于其他设计方法误差较低,通带内平稳度较高并且最小阻带衰减较高。通过分析推广到实际设计中去:对通带内平稳度要求较高时优先选用窗函数法;对最小阻带衰减要求较高时可优先选择最小乘方法;要求阶数或计算量较低时可优先选择波纹逼近法。示例示例 在小电流接地系统中注入在小电流接地系统中注入83.3Hz的的正弦信号,将其滤除。正弦信号,将其滤除。分析:采用波纹逼近法,采样频率分析:采用波纹逼近法,采样频率1000Hz。假设输入电流为假设输入电流为)3.83*2sin()200sin(2)100sin(5)(ttttx