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