用凯塞窗设计线性相位FIR滤波器
实验四:用凯塞窗设计线性相位FIR滤波器
通过本实验掌握窗函数法设计线性相位FIR低通滤波器的方法,对用窗函数法设计线性相位FIR低通滤波器有进一步理解。
1、窗函数设计法原理参见《数字信号处理》教材。
2、凯塞窗是对于给定的阻带衰减,是主瓣具有最大能量意义下的最佳窗函数,因此具有最陡的过渡带。所以通常选用凯塞窗来进行FIR滤波器的设计。
凯塞窗函数:
其中 为形状参数, 是第二类修正零阶贝塞尔函数,其幂函数展开式为:
给定滤波器的过渡带宽度 和阻带衰减 ,则滤波器的长度和形状参数 可由下列经验公式给出:
其中 。
计算机一台;
MATLAB软件
1、 编写程序。计算理想低通滤波器单位取样响应 的M函数文件dlp.m。 其中 , 。
2、 编写计算凯塞窗函数的M函数文件kwind.m。编写计算贝塞尔函数的M函数文件besl.m。
3、 编写程序,调用dlp.m和kwind.m文件,设计系统FIR滤波器。
利用凯塞窗来设计线性相位的FIR滤波器。
1. M函数文件dlp.m如下:
function H=dlp(wc,N)
sum=wc/pi;
a=(N-1)/2;
n=0:N-1
if n~=a
H=sum*sinc(wc*(n-a));
else
H=sum;
End
End
2.M函数文件besl.m如下:
function s=besl(x)
eps=10^(-9);
n=1;s=1;D=1;
while D>(eps*s)
T=x/(2*n);n=n+1;D=D*T^2;s=s+D;
End end
M函数文件kwind.m
function W=kwind(B,N)
for n=1:N
W(n)=besl(B*(1-(1-2*(n-1)/…
(N-1))^2)^(1/2))/besl(B);
end
end
function H=firfilter(np,ns,data,fs)
wp=(2*pi*np)/fs;
ws=(2*pi*ns)/fs;
wc=(wp+ws)/2;
dw=ws-wp;
youerw.com
if data>=50
beta=0.1102*(data-8.7);
elseif data>21&data<50
beta=0.5842*(data-21)^0.4+0.07886*(data-21);
else beta=0;
end
w=kwind(beta,N);
H=h.*w;
end
设计一个抽样频率为15KHZ,通带截止频率为8KHZ,阻带起始频率为3.5KHZ阻带衰减不低于-60dB的线性相位FIR低通滤波器。程序如下:
>> H=impfilter(800,3500,60,15000);
>>n=0:length(H)-1;
>>stem(n,H)
试验中,掌握了窗函数法法设计线性相位FIR低通滤波器的方法,对窗函数法设计线性相位FIR低通滤波器有了进一步的理解,并学会了用MATLAB来设计线性相位FIR低通滤波器。177