第五组基于矩形窗的FIR滤波器设计.docx
《第五组基于矩形窗的FIR滤波器设计.docx》由会员分享,可在线阅读,更多相关《第五组基于矩形窗的FIR滤波器设计.docx(16页珍藏版)》请在冰点文库上搜索。
![第五组基于矩形窗的FIR滤波器设计.docx](https://file1.bingdoc.com/fileroot1/2023-5/11/b0949f44-f43e-404f-83d1-2258bd90f1a0/b0949f44-f43e-404f-83d1-2258bd90f1a01.gif)
第五组基于矩形窗的FIR滤波器设计
惠州学院
HUIZHOUUNIVERSITY
《数字信号处理》课程设计报告
设计课题:
基于矩形窗函数的FIR滤波器设计
专业班级08电气信1班
姓名陈根深陈继摄高志凯
学号080705102080705104080705110
指导老师廖天发
日期2011年11月14日星期一
目录
第1章FIR滤波器设计原理-3-
1.1FIR滤波器-3-
1.2窗函数-4-
1.3矩形窗-4-
第2章仿真设计与结果分析-6-
2.1设计流程图-6-
2.2产生原始信号并分析频谱-7-
2.3使用矩形窗设计低通的数字滤波器-9-
2.4信号滤波处理-10-
2.5结果分析-13-
第3章总结-15-
参考文献-15-
matlab程序-15-
摘要
本文主要基于MATLAB平台,实现信号分析与滤波器的设计。
并改变滤波器参数或特性(低通、高通、带通或带阻),实现不同的滤波要求。
本设计产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,使用矩形窗设计不同特性的数字滤波器对信号进行滤波处理,分析所设计滤波器(画出了频率特性曲线),并对信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
关键词:
MATLAB,信号分析,FIR滤波器,矩形窗
课题:
基于矩形窗函数的FIR滤波器设计
第1章FIR滤波器设计原理
1.1FIR滤波器
FIR滤波器的数学表达式为:
(1-1)
式中:
N为FIR滤波器的抽头数;x(n)为第n时刻的输入样本;h(i)为FIR滤波器第i级抽头系数。
普通的直接型FIR滤波器结构如图2.1所示。
图1.1卷积码编码器的一般形式
在自适应处理、数据通信等领域中往往要求信号在传输过程中不能有明显的相位失真,FIR滤波器可以做到线性相位满足此要求。
FIR滤波器实质上是一个分节的延迟线,把每一节的输出加权累加,得到滤波器的输出。
对于FIR滤波器的单位脉冲响应h(i)只要满足以下2个条件之一,则为线性相位滤波器。
(1-2)
线性相位的FIR滤波器具有中心对称的特性,其对称中心在N/2处。
FIR滤波器的结构主要是非递归结构,没有输出到输入的反馈。
并且FIR滤波器很容易获得严格的线性相位特性,避免被处理信号产生相位失真【2】。
而线性相位体现在时域中仅仅是h(n)在时间的延时,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的。
此外,他不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。
其主要的不足之处是,其较好的性能是以较高的阶数为代价换来的。
因此,在保证相同性能的前提下,努力降低其阶数是FIR数字滤波器设计的重要因素之一。
1.2窗函数
FIR滤波器的设计方法有窗函数法、频率取样法和最优化设计法。
其中窗函数法是设计FIR滤波器最简单有效的方法,也是最常用的方法。
在本设计中,所用到的滤波器的系数都是借助于窗函数法完成的。
窗函数设计法是一种通过截短和计权的方法使无限长非因果序列成为有限长脉冲响应序列的设计方法。
利用加窗函数进行截断和平滑,实现一个物理可实现且具有线性相位的FIR滤波器的设计目的。
FIR滤波器的窗函数法设计过程为:
(1-3)
式中:
Hd(ejΩ)为逼近的理想滤波器频率响应;hd(k)为理想滤波器的单位脉冲响应,是无限长序列【3】。
为获取实际应用的FIR滤波,需将hd(k)截断,用有限长的h(k)近似表示,用窗函数可以避免吉布斯现象h(k)=hd(k)ω(k),最后得到实际FIR滤波的频率响应H(ejΩ)。
设计常用的窗函数有矩形窗、汉宁窗、海明窗、凯撒窗等。
矩形窗是一种比较容易实现的窗,本设计选择矩形窗实现.
在MATLAB下,这些窗函数分别为:
1.矩形窗:
w=boxcar(n),产生一个n点的矩形窗函数。
2.三角窗:
w=triang(n),产生一个n点的三角窗函数。
3.汉明窗:
w=hamming(n),产生一个n点的汉明窗函数。
4.汉宁窗:
w=hanning(n),产生一个n点的汉宁窗函数。
4.布莱克曼窗:
w=Blackman(n),产生一个n点的布莱克曼窗函数。
6.凯泽窗:
w=Kaiser(n,beta),产生一个n点的凯泽窗数,其中beta为影响窗函数旁瓣的参数。
1.3矩形窗
这是一种最简单的窗函数,从阻带衰减的观点来看也是性能最差的一种,其窗函数为
(1-4)
它的频率响应函数是
(1-5)
这是窗的振幅响应。
由上式真正的振幅响应为:
(1-6)
这表明在过渡带和阻带衰减的精确分析中,窗的振幅响应的连续积分是必须的。
振幅响应
在
有第一个零值,此处
=
即
=
因此,主瓣宽度是2
=
,从而近似过渡带宽是
。
第一个旁瓣的幅度近似在
=
处,并给出为
(1-7)
将这个值与主瓣幅度(等于M)比较,这个峰值旁瓣幅度是主瓣幅度的13dB。
累加振幅响应由第一个旁瓣幅度在21dB,这就形成了21dB的最小阻带衰减而与窗的宽度M无关。
利用最小阻带衰减,可将过渡带宽准确计算处,这个计算出的真正过渡带宽是
—
=
,这大约是近似带宽的一半【4】。
很清楚,在时域这是一种简单的加窗运算,并且在频域也是一种容易分析的函数。
然而,这里存在两个主要问题。
首先,21dB的最小阻带衰减在实际应用中是不够的。
其次,矩形加窗是对这个无限长的
的一种直接截取,它遭受吉布斯现象的影响。
如果增加M,没过旁瓣的宽度都将减小,但是在每个旁瓣下的面积将保持不变。
因此,旁瓣的相对幅度保持不变,最小阻带衰减仍为21dB,这就意味着全部波纹将向通带边缘集束。
第2章仿真设计与结果分析
2.1设计流程图
流程图如图2.1所示:
图2.1设计流程图
2.2产生原始信号并分析频谱
要产生一个连续信号,包含低频,中频,高频分量,并对其进行采样。
这里信号取的是s=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30),信号中包含了5Hz、15Hz、30Hz频率分量,对其采样的频率取100Hz。
用plot函数画出其时域波形如图2.2.1所示:
图2.2.1原始信号时域波形图
用fft函数对其进行快速傅里叶变换,画出其频谱图,即幅度谱和相位谱,如图2.2.2、2.2.3所示:
图2.2.2幅度谱
图2.2.3相位谱
从频谱图中可以清楚看出其包含有低频、中频和高频分量。
2.3使用矩形窗设计低通和高通数字滤波器
首先设计低通滤波器,针对信号含有的三个频率分量,低通滤波器要把中频和高频分量滤掉,因此取通带截止频率为fb=10Hz,阻带截止频率为fs=13Hz。
取样频率为fs=100Hz,由wb=2*pi*fb/fs、ws=2*pi*fc/fs、过渡带宽:
—
=1.8pi/M,得出M。
其中wc=0.5*(wb+ws);矩形窗用函数boxcar(M+1),用工具箱函数fir1,hn=fir1(M,wc/pi,boxcar(M+1))得出其频谱特性。
画出理想脉冲响应h(n)、滤波器的系数向量hn,如图2.3.1、2.3.2所示。
图2.3.1低通滤波器的相关图
图2.3.2低通滤波器的相关图
2.4信号滤波处理
用函数sf=filter(hn,[1],s)分别得出滤波后的信号,其中hn对应不同滤波器而不同。
画出滤波后信号的时域波形和频谱图。
通过低通滤波器后的的信号时域波形和频谱图如图2.4.1、2.4.2、2.4.3所示。
图2.4.1滤波后信号的时域波形图
图2.4.2滤波后信号的幅度谱
图2.4.3滤波后信号的相位谱
2.5结果分析
用函数plot(w,abs([S(1:
256)'SF(1:
256)']))和legend({'before','after'})可在一张图上画出滤波前后信号的幅度谱,从中可以清楚看出滤波的效果。
信号用低通滤波器滤波前后的对比如图2.5所示。
图2.5滤波前后滤波前后信号的对比图
第3章总结
在滤波器截止频率的选择上,由于原始信号包含5Hz、15Hz、30Hz频率分量,开始时在设计低通滤波器选择了10Hz和20Hz,结果对处于过渡带的15Hz滤波不很理想,最后改为10Hz和13HZ,之后从对比图中可以看出,滤波的效果就很理想了。
矩形窗属于时间变量的零次幂窗。
矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。
这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。
参考文献
[1]吴大正,高西全matlab及在电子信息课程中的应用电子工业出版社
[2]楼顺天,刘晓东MATLAB7.x的系统分析与设计-信号处理.西安电子科技大学出版社
[3]丁玉美,高西全数字信号处理.西安:
西安电子科技大学出版社
课程设计相关程序
%程序功能:
产生一个包含低频、中频、高频的连续信号进行取样并画出其时域图。
Fs=100;
t=(1:
100)/Fs
s1=sin(2*pi*t*5)
s2=sin(2*pi*t*15)
s3=sin(2*pi*t*30);
s=s1+s2+s3;
plot(t,s);%画出信号的时域波形
xlabel('Time(seconds)')
ylabel('Timewaveform')
title('原始信号的时域波形')
%程序功能:
画出信号的频谱图。
S=fft(s,512)%对s进行快速傅立叶变换
w=(0:
255)/256*(Fs/2)
plot(w,abs(S(1:
256)))%画出信号的幅度图
xlabel('Frequency(Hz)')
ylabel('幅度')
title('幅度谱')
axis([035060]);grid
plot(w,angle(S(1:
256)))%画出信号的相位图
xlabel('Frequency(Hz)')
ylabel('相位')
title('相位谱')
%程序功能:
设计低通滤波器并画出其频谱图:
fb=10;fc=13%设置滤波器截止频率
fs=100;wb=2*pi*fb/fs
ws=2*pi*fc/fs;wc=0.5*(wb+ws)
tr_width=ws-wb%过渡带宽
M=ceil(1.8*pi/tr_width)
n=0:
M;r=M/2;
hn=fir1(M,wc/pi,boxcar(M+1));%矩形窗加窗法
figure
(1);freqz(hn,1,100)%矩形窗FIR的频响曲线
figure
(2);subplot(1,2,1);stem(n,hn,'k.')%显示矩形窗FIR的系数
title('矩形窗FIR')
%程序功能:
画出滤波后信号的时域波形和频谱
sf=filter(hn,[1],s)%sf为滤滤波后的信号
plot(t,sf)%画出滤波后信号的时域波形
xlabel('Time(seconds)')
ylabel('Timewaveform')
axis([01-11])
title('滤波后信号的时域波形')
SF=fft(sf,512)%对sf进行快速傅里叶变换
w=(0:
255)/256*(Fs/2);plot(w,abs(SF(1:
256)))%画出滤波后信号的幅度图
xlabel('Frequency(Hz)')
ylabel('幅度谱')
title('滤波后信号的幅度谱');grid
plot(w,angle(SF(1:
256)))%画出滤波后信号的相位图
xlabel('Frequency(Hz)')
ylabel('相位谱')
title('滤波后信号的相位谱')
%程序功能:
对滤波前后信号进行比较
plot(w,abs([S(1:
256)'SF(1:
256)']))%将滤波前后信号的幅度谱画在一起
xlabel('Frequency(Hz)')
ylabel('Mag.ofFouriertransform')
grid;
legend({'before','after'})%对两个曲线进行区分命名
title('滤波前后信号对比')