MATLAB中用FDATool设计滤波器及使用该文章讲述了MATLAB中用FDATool设计滤波器及使用.1.在Matlab中键入fdatool运行FilterDesignandAnalysisTool。具体使用请参见MatlabHelp中的SignalProcessingToolbox-FDATool。2.在fdatool工具中应该注意的几个问题:(a)Fstop(阻带截止频率)不能大于或等于采样频率Fs/2,这是由于数字滤波器设计的方式决定的。(b)将设计好的滤波器导出,可以采用两种方式Exportthefiltereitherasfiltercoefficientsvariablesorasadfiltormfiltfilterobjectvariable。(详细说明参见MatlabHelp中的SignalProcessingToolbox-FDATool-ExportingaFilterDesign。导出:File---Export弹出EXPORT对话框,选择“ExportAs”为“Objects”,“VarableNames”可以更改,默认为Hd。3.(a)如果导出的是dfiltormfiltfilterobjectvariable,则可以用[b,a]=tf(Hd)将dfiltfilterobject转换为转移函数形式,然后用d=filter(b,a,x);使用这个滤波器。其中:filter是默认函数,b、a是刚刚设计的传递函数参数,x是原始采集信号,d为滤波后的信号。x=importdata('E:\matlab_work\xy\bb\O6.txt');N=length(x);%取长度fs=4000;%采样频率t=(0:N-1)/fs;输出Hd;[b,a]=tf(Hd);%得到传递函数d=filter(b,a,x);subplot(311);plot(t,x);title('原始信号');xlabel('t');ylabel('y');gridon;基于fdatool工具的数字滤波器的matlab设计数字滤波器的matlab设计1.1fdatool界面设计1.1.1fdatool的介绍fdatool(filterdesign&analysistool)是matlab信号处理工具箱里专用的滤波器设计分析工具,matlab6.0以上的版本还专门增加了滤波器设计工具箱(filterdesigntoolbox)。fdatool可以设计几乎所有的基本的常规滤波器,包括fir和iir的各种设计方法。它操作简单,方便灵活。fdatool界面总共分两大部分,一部分是designfilter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。designfilter部分主要分为:filtertype(滤波器类型)选项,包括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,所以不必定义。windowspecifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数。1.1.2带通滤波器设计实例本文将以一个fir滤波器的设计为例来说明如何使用matlab设计数字滤波器:在小电流接地系统中注入83.3hz的正弦信号,对其进行跟踪分析,要求设计一带通数字滤波器,滤除工频及整次谐波,以便在非常复杂的信号中分离出该注入信号。参数要求:96阶fir数字滤波器,采样频率1000hz,采用hamming窗函数设计。本例中,首先在filtertype中选择bandpass(带通滤波器);在designmethod选项中选择firwindow(fir滤波器窗函数法),接着在windowspecifications选项中选取hamming;指定filterorder项中的specifyorder=95;由于采用窗函数法设计,只要给出通带下限截止频率fc1和通带上限截止频率fc2,选取fc1=70hz,fc2=84hz。设置完以后点击designfilter即可得到所设计的fir滤波器。通过菜单选项analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性。设计完成后将结果保存为1.fda文件。在设计过程中,可以对比滤波器幅频相频特性和设计要求,随时调整参数和滤波器类型,以便得到最佳效果。其它类型的fir滤波器和iir滤波器也都可以使用fdatool来设计。图1滤波器幅频和相频响应(特性区)fig.1magnituderesponseandphaseresponseofthefilter1.2程序设计法在matlab中,对各种滤波器的设计都有相应的计算振幅响应的函数【3】,可以用来做滤波器的程序设计。上例的带通滤波器可以用程序设计:c=95;%定义滤波器阶数96阶w1=2*pi*fc1/fs;w2=2*pi*fc2/fs;%参数转换,将模拟滤波器的技术指标转换为数字滤波器的技术指标window=hamming(c+1);%使用hamming窗函数h=fir1(c,[w1/piw2/pi],window);%使用标准响应的加窗设计函数fir1freqz(h,1,512);%数字滤波器频率响应在matlab环境下运行该程序即可得到滤波器幅频相频响应曲线和滤波器系数h。篇幅所限,这里不再将源程序详细列出。2simulink仿真本文通过调用simulink中的功能模块构成数字滤波器的仿真框图,在仿真过程中,可以双击各功能模块,随时改变参数,获得不同状态下的仿真结果。例如构造以基波为主的原始信号,,通过simulink环境下的digitalfilterdesign(数字滤波器设计)模块导入2.1.2中fdatool所设计的滤波器文件1.fda。仿真图和滤波效果图如图2所示。图2simulink仿真图及滤波效果图fig.2simulatedconnectionsandwaveform可以看到经过离散采样、数字滤波后分离出了83.3hz的频率分量(scope1)。之所以选取上面的叠加信号作为原始信号,是由于在实际工作中是要对已经经过差分滤波的信号进一步做带通滤波,信号的各分量基本同一致,可以反映实际的情况。本例设计的滤波器已在实际工作中应用,取得了不错的效果。