实验六FIR滤波器的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六、用窗函数法设计FIR 数字滤波器

一、实验目的:

(1)熟悉基本的窗函数,及其特点。

(2)掌握用窗函数法设计FIR 数字滤波器的原理和方法。 (3)熟悉线性相位FIR 数字滤波器特性。 二.实验原理

(一)FIR 滤波器的设计

FIR 滤波器具有严格的相位特性,这对于语音信号处理和数据传输是很重要的。目前FIR 滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。本实验中的窗函数法比较简单,可应用现成的窗函数公式,在技术指标要求不高的时候是比较灵活方便的。它是从时域出发,用一个窗函数截取一个理想的)(n h d 得到h(n),以有限长序列h(n)近似理想的)(n h d :如果从频域出发,用理想的)(jw d e h 在单位圆上等角度取样得到H (k ),根据h(k)得到H(z)将逼近理想的)(z H d 这就是频率取样法。

(二)窗函数设计法

同其它的的数字滤波器设计的方法一样,用窗函数设计滤波器也是首先要对滤波器提出性能指标。一般是给定一个理想的频率响应)(jw d e h ,使所设计的FIR 滤波器的频率响应

)(jw e h 去逼近所要求的理想的滤波器的响应)(jw d e h 窗函数设计的任务在于寻找一个可实

现(有限长单位脉冲响应)的传递函数。

∑-=-=1

)()(N n jw jw

n e n h e H

去逼近)(jw d e h 。我们知道,一个理想的频率响应)(jw d e h 的傅里叶变换

⎰=

π

π

20

)(21

)(dw e e H n h jwn

jw d d 所得到的理想的单位脉冲响应)(n h d 往往是一个无限长序列,对)(n h d 经过适当的加权、截取处理才得到一个所需要的有限长脉冲响应序列。对应不同的加权、截断,就有不同的窗函

数。所要寻找的滤波器脉冲响应就等于理想脉冲响应和窗函数的乘积。

即:)()()(n w n h n h d =

由此可见,窗函数的性质就决定了滤波器的品质。例如:窗函数的主瓣宽度决定了滤波器的过渡带宽;窗函数的旁瓣代销决定了滤波器的阻带衰减。以下是几种常见的窗函数: 1、矩形窗 )()(n R n w N = 2、Hanning 窗 )()]1

2cos(

1[5.0)(n R N n

n w N --=π

3、Hamming 窗 )()]12cos(46.054.0[)(n R N n

n w N --=π 4、Blackman 窗 )()]1

4cos(08.0)12cos(

5.042.0[)(n R N n

N n n w N -+--=ππ 5、Kaiser 窗 )

(]1))1(2[(1()(02

0ββI N n

I n w ---=

其中)(0∙I 是零阶贝塞尔函数。Kaiser 窗可以通过改变β参数,改变其主瓣宽度和旁瓣大小。 在MATLAB 中产生窗函数十分简单: (1)矩形窗(Rectangle Window )

调用格式:w=boxcar(n),根据长度n 产生一个矩形窗w 。 (2)三角窗(Triangular Window )

调用格式:w=triang(n) ,根据长度n 产生一个三角窗w 。 (3)汉宁窗(Hanning Window )

调用格式:w=hanning(n) ,根据长度n 产生一个汉宁窗w 。 (4)海明窗(Hamming Window )

调用格式:w=hamming(n) ,根据长度n 产生一个海明窗w 。 (5)布拉克曼窗(Blackman Window )

调用格式:w=blackman(n) ,根据长度n 产生一个布拉克曼窗w 。 (6)恺撒窗(Kaiser Window )

调用格式:w=kaiser(n,beta) ,根据长度n 和影响窗函数旁瓣的β参数产生一个恺撒窗w 。

表1 各种窗函数的性能指标

(三)Matlab 提供了基于窗函数法的FIR 滤波器的设计函数fir1和fir2

Matlab 中,函数fir1()和fir2()利用加窗傅里叶级数法设计FIR 滤波器。函数fir1()用来设计传统的LP (低通)、HP (高通)、BP (带通)、BS (带阻)和多频带FIR 滤波器;而函数fir2()用来设计具有任意幅度响应的的FIR 滤波器。 1. fir1:基于窗函数的FIR 滤波器设计-标准频率响应形状

hn=fir1(M ,wc ),返回6dB 截止频率为wc 的M 阶(单位脉冲响应h(n)长度N=M+1)FIR 低通(wc 为标量)滤波器系数向量hn ,默认选用哈明窗。滤波器单位脉冲响应h(n)与向量hn 的关系为

h(n)=hn(n+1), n=0,1,2,3,……,M

B=fir1(M,wc ,’ftype’,window)

调用格式: n 为阶数、wc 是归一化截止频率(0

的矢量时,本函数将设计带通滤波器,其通带为W1<ω

应当注意,在设计高通和带阻滤波器时,阶数N只能取偶数

(h(n)长度N+1为奇数)。不过,当用户将N设置为奇数时,fir1会自动对N加1。

2.fir2:于窗函数的FIR滤波器设计-标准频率响应形状

B=fir2(N,f,m,window)

例题1:利用fir1函数设计为信号f =2*sin(2*pi*20*t)+4*sin(2*pi*60*t)设计一低通滤波器滤除频率为60Hz的信号。

clear,close all;

fs=200;

N1=200;

n=0:N1-1;

f=n*fs/N1;

t=0:1/fs:(N1-1)/fs;

x=2*sin(2*pi*20*t)+4*sin(2*pi*60*t);

X=abs(fft(x));

X1=X/(N1/2);

X1(1)=X1(1)/2;

plot(f(1:N1/2),X1(1:N1/2));

title('原始信号f');

N = 11; %滤波器节点个数

wc = 0.5; %归一化截止频率

hd = fir1(N,wc); % 基于加窗函数的FIR滤波器设计,系统默认窗为hanning

ft=filter(hd,1,x); %也可以采用ft=fftfilt(hd,f),或ft = conv(f,hd);

figure;

Y=abs(fft(ft));

N2=length(Y);

Y1=Y/(N2/2);

Y1(1)=Y1(1)/2;

plot(f(1:N2/2),Y1(1:N2/2));

title('滤波后信号ft');

函数fftfilt的调用格式为y=fftfilt(b,x) 该格式是利用基于FFT的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR滤波器有效。该函数是通过向量b描述的滤波器对x数据进行滤波。

x是等待滤波的信号;

b是FIR滤波器的H(z)的分子多项式系数

例题2:调用fir2函数逼近截止频率wc=0.6 的理想高通30阶FIR数字滤波器设计

f = [0 0.6 0.6 1];

m = [1 1 0 0];

b = fir2(30,f,m);

figure(1);

stem(n,b,'.'),title('h(n)');grid

[h,w] = freqz(b,1,128);

相关文档
最新文档