中国地质大学(北京)
实 验 报 告
课程名称:数字信号处理
实验名称:用凯塞窗设计线性相位带通FIR滤波器 姓 名: 张淑坤 学 号: 1004133105 班 级:10041331 指导教师:陈玉东 评 分:
实验时间:2015-12-31
用凯塞窗设计线性相位带通FIR滤波器
实验目的:
基于MATLAB环境,熟悉利用窗函数法设计线性相位FIR滤波器的原理和方法。
实验环境:
硬件环境:计算机,软件环境:MATLAB平台。
实验环境原理:
凯塞窗是对于给定的阻带衰减,使主瓣具有最大能量意义下的最佳窗函数,因此具有最陡的过渡带。
窗函数的形式为
I0[ ?1?(1?wk(n)?2n2) ]N?1 , 0?n?N?1 I0(?)?其中?为形状参数,I0[x]是第一类修正零阶贝塞尔函数,其幂函数展开式为
1xI0[x]?1??[()k]2
k?1k!2给定滤波器的过渡带宽度?? (rad)和阻带衰减As(dB),则滤波器的长度和形状参数?可由下列经验公式给出:
N?As?7.95
2.286Δ?As?50dB?0.1102(As?8.7),?β??0.5842(As?21)0.4?0.07886(As?21),21?As?50dB
?0,As?21dB?设计流程图
输入带通指标:?p1、?p2、?s1、?s2、As、 编写函数dbpfilter_FIR.m用以计算理想带通滤波器单位抽样响应h(n) 计算N(N为奇数)及? 显示N及? 编写函数kaiser_WF.m计算凯塞窗函数用stem(wk)显示wk(n) 计算h (n)=hd(n)·wk(n) 计算滤波器的幅频及对数幅频特性 并打印结果,验证指标要求 实验内容要求:
1. 编写计算理想带通滤波器单位抽样响应hd(n)的M函数文件dbpfilter_FIR.m,各变量定义
如下:
dbpfilter_FIR(d_omega, N, beta)
% d_omega ---输入数字频率数组(向量); % d_omega(1)---阻带下边缘截止频率 % d_omega(2)---通带下边缘截止频率 % d_omega(3)---通带上边缘截止频率 % d_omega(4)---阻带上边缘截止频率 % N ---数字带通滤波器的长度
% hd ---理想数字带通滤波器单位冲激响应
% h ---实际数字带通滤波器单位冲激响应(所设计的) %wk ---凯泽窗序列 % beta ---凯泽窗参数
2. 编写计算凯泽窗函数wk(n)的M函数文件kaiser_WF.m,各变量定义如下: function wk= kaiser_WF(N, beta)
% N ---凯泽窗序列的长度 % beta---凯泽窗参数 % wk ---凯泽窗序列
计算贝塞尔函数的参考程序bessel_IM.m如下:
function s=bessel_IM (x)
eps= 10^(-12); n=1; s=1; D= 1; while D>(eps*s) T= x/(2*n); D= D *T^2; s= s+D;
n= n+l;
end
3. 编写 .m程序文件,通过调用dbpfr.m和kaiser_WF.m文件,设计下列带通FIR滤波器: 通带允许起伏 ≤l dB,?p1=0.3?,?p2=0.5?
阻带衰减 ≤40 dB,?s1=0.15?,?s2=0.65
实验内容及结果 1、MATLAB程序
function [hd]=ideal_LP(wc,N)
%Ideal Lowpass filter computation %------------------------------------------ %[hd]=ideal_LP(wc,M)
%hd ---理想低通滤波器单位冲激响应(0<=n<=(n-1)) %wc ---截至频率(单位弧度/秒) %N ---理想低通滤波器的长度 % %
alpha=(N-1)/2; n=[0:(N-1)]; m=n-alpha+eps;
hd=sin(wc*m)./(pi*m);
function wk= kaiser_WF(N, beta) for n=1:1:N
wk(n)=bessel_IM (beta*sqrt(1-(1-2*(n-1)/(N-1))^2))/bessel_IM(beta); end
function s=bessel_IM (x) N=49;
n=[0:1:N-1];
eps= 10^(-12); n=1; s=1; D= 1; while D>(eps*s) T= x/(2*n); D= D *T^2; s= s+D; n= n+1;
End
function dbpfilter_FIR(d_omega, N, beta)
As=60;
d_omega=[0.15,0.3,0.5,0.65]*pi delta_w=d_omega(2)-d_omega(1); N=(As-7.95)/(2.286*delta_w) N=ceil(N) M=N;
n=[0:1:N-1];
beta=0.1102*(As-8.7); wk=kaiser_WF(N,beta);
wc_lower=(d_omega(1)+d_omega(2))/2
wc_upper=(d_omega(3)+d_omega(4))/2
hd=ideal_LP(wc_upper,N)-ideal_LP(wc_lower,N); h=hd.*wk;
[H,w]=freqz(h,1,1000,'whole'); H=(H(1:501))'; w=(w(1:501))'; mag=abs(H);
db=20*log10((mag+eps)/max(mag));
figure(1);clf; subplot(221); stem(n,hd);
title('理想数字带通滤波器单位冲激响应'); axis([-1,N,-0.4,0.6]); ylabel('h_d(n)');
subplot(222); stem(n,wk); title('凯泽窗'); axis([-1,N,0,1.3]); ylabel('w_k(n)');
subplot(223); stem(n,h);
axis([-1,N,-0.4,0.6]); ylabel('h(n)')
title('设计出的滤波器单位冲激响应');
实验 三 用凯塞窗设计线性相位带通FIR滤波器 - 副本



