凯泽窗设计线性相位带通FIR滤波器Word文档下载推荐.docx
《凯泽窗设计线性相位带通FIR滤波器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《凯泽窗设计线性相位带通FIR滤波器Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
本课程设计主要是采用MATLAB仿真实现凯泽窗设计线性相位带通FIR滤波。
在加深理论知识的基础上,对MATLAB仿真也有更深的巩固了。
工程概况
本次课程设计的主题是采用Matlab软件仿真实现线性分组码的仿真与分析。
首先要求对Matlab软件有着较为深入地了解和认识,掌握一些Matlab软件的基本函数用法。
例如:
用Matlab软件实现2PSK的调制与解调等等。
同时利用软Matlab件也能对书本上的知识进行验证,,与书本上的讲解进行对照分析和比较。
本次课程设计要求的技术对我们通信的学习起着很大的作用。
正文
设计的目的和意义
设计的目的
1、学会查阅资资料。
2、熟练运用MATLAB进行编程。
3、掌握凯泽窗的设计和FIR滤波器的基本原理。
4、观察实现的曲线图形并比较与理想的误差。
设计的意义
通过本课程设计实验使我们掌握凯泽窗的设计及学习方法。
培养我们的实际应用的能力,提高分析问题、解决问题的能力。
而且提高我们对这门课的了解深度,把理论知识和实践仿真相结合,增强了个人的动手和独立思考能力,也为以后后续课程的学习以及从事实际工作打下良好的基础。
设计原理
FIR数字滤波器
有限脉冲响应数字滤波器具有一般FIR系统的一切特征,与IIR系统的特征相比在单位脉冲响应h(n)、差分方程形式、系统函数H(z)以及系统结构方面有明显的区别。
另外,可以设定条件来保证FIR滤波器具有线性相位特征,但IIR滤波器很难实现线性相位。
设一个因果有限脉冲响应数字滤波器的单位脉冲响应为h(n),n=0~N-1,则其相位的系统函数H(z)如下:
(1)
上式两边求Z反变换可以得到滤波器系统的差分方程描述形式:
(2)
显然,上式右边也就是单位脉冲响应h(n)与输入信号x(n)的线性卷积h(n)*x(n)。
上式说明,FIR数字滤波器额当前输出信号值仅仅与当前输入信号值和N-1个以前的输入信号值有关。
线性相位的特点
对于滤波器来说,如果能够具有线性相位特征那是非常有意义的,因为这表示滤波器对输入信号中各个频率成分的相位延迟效应是一样的,从时域来看就是各个时间点的信号延时是一样的,这在图像和视频信号的传输与处理中尤其重要。
例如,设一个线性相位数字滤波器系统的频率响应H(ejω)如下
H(ejω)=|H(ejω)|ejω(3)
即,其幅度响应是|H(ejω)|,而相位θH(ω)=-αω是线性的,斜率为-α。
当输入信号x(n)经过这样的滤波器时,得到的输出信号y(n)的频谱为
Y(ejω)=H(ejω)X(ejω)
=|H(ejω)||X(ejω)|
(4)
=|Y(ejω)|
上式说明,输出信号的相位谱是θγ(ω)=θx(ω)-αω。
对上式求IDFT得到输出信号如下
(5)
其中
(6)
y0(n)与滤波器的相位无关。
可以看出,滤波器相位-αω所引起的掩饰n-α与频率无关,这意味着输入信号的任何频率成分都有一样的时延。
不失一般性,设|H(ejω)|=1,对(4)式两边求傅立叶反变换得
y(n)=x(n-α)(7)
上式说明,如果滤波器具有线性相位特性,则对输入信号的时序不会有影响,即对输入信号的移位是处处相等的。
线性相位FIR滤波器的实现条件
所有FIR数字滤波器器都可以实现线性相位特性。
首先分析因果FIR数字滤波器,其单位脉冲响应为h(n),n=0~N-1,相应的系统函数如式
(1)所示频率响应如下:
(10)
假设h(n)满足条件h(n)=h(n-1-n),即它是以中点n=(N-1)/2对称的,则式(10)可写成:
(11)
当N为偶数时,令m=N-1-n,则频率响应H(ejω)进一步推导如下:
(12)
当N为奇数时,同样令m=N-1-n,则频率响应H(ejω)进一步推导如式(13)所示。
该式同样说明,H(ejω)具有线性相位θH(ω)=-ω(N-1)/2,并且与h(n)的具体值无关。
因此,无论因果FIR数字滤波器的单位脉冲响应h(n)长度是偶数还是奇数,都不会影响滤波器的线性相位特征,只要满足中点对称条件h(n)=h(N-1-n),其相位始终具有线性相位特征,即θH(ω)=-ω(N-1)/2,并且与h(n)的具体数据无关。
(13)
显然,只要因果FIR数字滤波器H(ejω)是线性相位的,则任意形式FIR数字滤波器也具有线性相位特性。
因为he(n)是由h(n)的移位形成的,所以,任意FIR数字滤波器只要满足中点对称条件都将具有相位特性。
凯泽窗设计原理
设计FIR数字滤波器的基本方法是窗函数设计法,窗函数法设计FIR滤波器的基本思想是:
根据给定的滤波器技术指标,选择滤波器长度N和窗函数W(n),使其具有最窄宽度的主瓣和最小的旁瓣。
其核心是从给定的频率特性,通过加窗确定有限长单位脉冲响应序列h(n)。
可采用的窗函数主要有矩形窗、汉宁窗、哈明窗、布莱克曼窗和凯泽窗。
他们的频率响应特性不同,因此在设计FIR滤波器时的作用也有所不同。
最常使用的一种窗函数为凯泽窗。
低通、带通等选频滤波器都是具有幅度锐变的IIR滤波器,即其单位脉冲响应hi(n)为无限长。
窗函数设计法的实质是一种IIR滤波器的时域逼近,通过一个短时窗ω(n),n=0~N一1将IIR的单位脉冲响应hj(n)截断为有限长,保留主要能量部分而形成有限长单位脉冲响应h(n),从而完成FIR数字滤波器的设计。
即
h(n)=hi(n)ω(n),n=0~N一1(14)
一般,为了得到可实际应用的因果FIR滤波器,窗函数ω(n)的分布应该在行n≥0区间。
为了实现FIR滤波器的线性相位特性,要求窗函数ω(n)和hi(n)在0≤n≤N一1区间内中点对称分布。
应用窗函数设计方法的前提条件是:
无限长单位脉冲响应hi(n)应该随时间逐步衰减,并且越快越好,因为只有这样,(14)式的逼近才不至于引起大的失真。
对(14)式两边求傅立叶变换得FIR滤波器的频率响应如下:
(15)
由此可见,FIR滤波器的频率响应H(ejω)是理想选频滤波器Hi(ejω)与窗函数频谱W(ejω)的线性卷积.从滤波器设计的角度看,主要设计指标就是要使设计出的FIR滤波器频率响应H(ejω)尽可能地逼近理想选频滤波器的频率响应Hj(ejω))。
要做到这一点,不仅关系到窗函数的选择,也涉及到窗函数的长度。
窗函数设计方法的基本原理都是用一个短时窗将信号截短。
但是,短时谱主要是为了能够实时地得到信号频谱或频谱随时间变化的动态特征,而窗函数设计的目的是构造一个满足一定技术指标的有限脉冲响应FIR数字滤波器,并且,这种滤波器可以方便地实现线性相位特性。
在实际应用中,FIR滤波器可以依据差分方程由软件实现,也可以按照系统结构由硬件实现
结果
给定的数据指标,通带允许起伏:
Rp=-1db,wp1=*pi,wp2=*pi;
阻带衰减:
As<
=40db,ws1=*pi,ws2=*pi。
理想单位抽样响应h(n):
凯泽窗函数w(n):
实际单位抽样响应:
实际频谱图:
理想频谱图:
把经过凯泽窗的冲击序列响应和经过的相比较,两侧的序列值变小,但是中间的序列值变化不大。
理想的频域图和经过凯泽窗的频域图比较,实际的频域图的主瓣相对理想的较宽一点,还是存在一定的误差。
由此相比较可知主瓣的宽度变窄了,旁辦也变小了。
符合设计要求。
结论
有以上实验结果可知,该程序基本完成了凯泽窗设计线性相位带通FIR滤波的设计,并且输入了一个抽样响应进行测试观察,与理想的相比较误差不是很大,相对理想的。
通过这次课程设计我自身还有许多不足需要改正。
致谢
在这次课程设计的撰写过程中,遇到了很多的困难,但我也得到了许多人的帮助。
首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计的难题。
同时也感谢学院为我提供良好的做毕业设计的环境。
最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。
参考文献
[1]王艳文,崔志娟,张静.基于MATLAB凯泽窗的FIR数字滤波器设计.黑龙江科技信息,2013年13期
[2]樊昌新,曹丽娜.通信原理.国防工业出版社,2011
[3]俞一彪,孙兵。
数字信号处理理论与应用.东南大学出版社,
[4]程佩青.数字信号处理。
清华大学出版社,3版。
附录
dbpfr:
functionhd=dbpfr(omega,N)
dw=omega
(2)-omega
(1);
alfsa=40;
M=ceil(/*dw));
ifmod(M,2)==0;
N=M-1;
elseN=M;
end
n=[0:
N-1];
wc1=1/2*(omega
(1)+omega
(2));
wc2=1/2*(omega(3)+omega(4));
alpha=(N-1)/2;
hd=sin(wc2*(n-alpha))./(pi.*(n-alpha))-sin(wc1*(n-alpha))./(pi.*(n-alpha));
jj=find(n==alpha);
hd(jj)=(wc2-wc1)/pi;
besl:
functions=besl(x)
eps=10^(-9);
n=1;
s=1;
D=1;
whileD>
(eps*s)
T=x/(2*n);
n=n+1;
D=D.*T.^2;
s=s+D;
kwnd:
function[wk,N]=kwnd(omega,alfas)
alfas=40;
M=ceil(./*dw));
ifmod(M,2)==0
ifalfas>
=50
beta=*;
elseifalfas<
=21
beta=0;
elsebeta=*(alfas-21).^+*(alfas-21);
end
n=[1:
N-2];
x1=beta*sqrt(1-(1-2.*n./(N-1)).^2);
x2=beta;
s1=besl(x1);
s2=besl(x2);
wk1=1./s2;
wk2=s1./s2;
wk3=1./s2;
wk=[wk1wk2wk3];
ttlbq:
clc;
clear;
Rp=-1;
omega=[*pi*pi*pi*pi];
[wk,N]=kwnd(omega,alfas)
hd=dbpfr(omega,N)
figure
(1),clf;
stem(hd);
grid;
title('
hd(n)'
);
figure
(2),clf;
stem(wk);
w(n)'
hn=hd.*wk
figure(3),clf
stem(hn);
h(n)'
Hn=fft(hn,128);
figure(4),clf
subplot(1,2,1);
plot(abs(Hn(1:
64)));
幅频响应曲线'
subplot(1,2,2);
plot(20.*log(abs(Hn(1:
32))));
对数幅频响应曲线'
Hd=fft(hd,128);
figure(5),clf
plot(abs(Hd(1:
65)));
理想幅频响应曲线'
、