实验三用凯塞窗设计线性相位带通FIR滤波器-副本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国地质大学(北京) 实验报告
课程名称:数字信号处理
实验名称:用凯塞窗设计线性相位带通FIR滤波器
姓名:张淑坤
学号: 1004133105
班级:10041331
指导教师:陈玉东
评分:
实验时间: 2015-12-31
用凯塞窗设计线性相位带通FIR 滤波器
实验目的:
基于MATLAB 环境,熟悉利用窗函数法设计线性相位FIR 滤波器的原理和方法。
实验环境:
硬件环境:计算机,软件环境:MATLAB 平台。
实验环境原理:
凯塞窗是对于给定的阻带衰减,使主瓣具有最大能量意义下的最佳窗函数,因此具有最陡的过渡带。
窗函数的形式为
10 )
(] )121(1 [)(02
0-≤≤--
-=
N n I N n I n w k ,ββ 其中β为形状参数,I 0[x ]是第一类修正零阶贝塞尔函数,其幂函数展开式为
∑∞
=+=120])2
(!1[1][k k x
k x I
给定滤波器的过渡带宽度∆ω (rad)和阻带衰减A s (dB),则滤波器的长度和形状参数β可由下列经验公式给出:
ω
Δ286.295
.7-≈
s A N
⎪⎩
⎪
⎨⎧≤≤≤-+-≥-=dB 210dB 5021)21(07886.0)21(5842.0dB 50)7.8(1102.04.0s s s s s s A A A A A A β,,,
设计流程图
实验内容要求:
1. 编写计算理想带通滤波器单位抽样响应h d(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. 编写计算凯泽窗函数w k(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('设计出的滤波器单位冲激响应');