实验三用凯塞窗设计线性相位带通FIR滤波器-副本

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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('设计出的滤波器单位冲激响应');

相关文档
最新文档