当前位置:首页 > FIR数字滤波器设计与实现
% MATLAB PROGRAM eg-1
% Window-based FIR filter design %Perfoment parameter wp =0.5*pi; ws=0.66*pi;
%Width of transition band wdelta =ws-wp;
%Length of the filter N= ceil(8*pi/wdelta) if rem(N,2)==0
N=N+1; end
% Length of the window Nw =N;
%Cutoff Frequency of the filter wc =(wp+ws)/2;
%Compute impulse response of ideal filter n =0: N-1;
alpha =(N-1)/2; m =n-alpha+0.00001; hd =sin(wc*m)./(pi*m);
%Compute time response of the Hanning Window win =hanning(Nw);
%Compute acture impulse response of the filter h=hd.*win’;
b=h; freqz(b,1,512)
程序运行即得所设计FIR线形相位滤波器频率特性。如图所示:
该例题运用了上叙步骤进行编程,其实在MATLAB里,信号处理工具箱提供了基于上叙原理设计标准型 FIR滤波器的工具函数FIR1,函数FIR1是采用经典窗函数设计线性相位 FIR数字滤波器的函数,其调用格式为: b=fir1(n,ωn) b=fir1(n, ωn,‘ftype’) b=fir1(n, ωn,window)
b=fir1(n, ωn,‘ftype’,windows)
下面的程序就是调用工具函数FIR1对上题进行重新编程 % MATLAB PROGRAM eg-1
% Window-based FIR filter design %Perfoment parameter wp =0.5*pi; ws=0.66*pi;
%Width of transition band wdelta =ws-wp;
%Length of the filter N= ceil(8*pi/wdelta)
%Cutoff Frequency of the filter Wn=(0.5+0.66)*pi/2;
%using’FIR1’Design the filter b=fir1(N,Wn/pi,hanning(N+1)); freqz(b,1,512)
由上可知,用函数FIR1设计的FIR数字滤波器在通带内具有很好的线性相位特性
例二:设计一个24阶FIR带通滤波器,通带频率为0.35≤ω≤0.65 利用工具函数FIR1编写程序如下: % MATLAB PROGRAM eg-2
% Window-based FIR filter design %Perfoment parameter wp=[0.35 0.65]; N=24;
%using’FIR1’Design the filter b=fir1(2*N, wp); freqz(b,1,512)
这例也使用了函数fir1的设计方法。
例三: 用CLS法设计一个25阶低通滤波器,截止频率0.3π % MATLAB PROGRAM eg-6 Tsired FIR lower filter n=55; wo=0.3;
dp=0.02; ds=0.008; b=fircls1(n,wo,dp,ds,‘plot’);
共分享92篇相关文档