实验六FIR滤波器的设计

更新时间:2023-11-30 17:13:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

一、实验目的:

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

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

(一)FIR滤波器的设计

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

(二)窗函数设计法

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

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

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

H(e)??h(n)e?jwn

jwn?0N?1去逼近hd(ejw)。我们知道,一个理想的频率响应hd(ejw)的傅里叶变换

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

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

即:h(n)?hd(n)w(n)

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

2?n)]RN(n) N?12?n4?n)?0.08cos()]RN(n) 4、Blackman窗 w(n)?[0.42?0.5cos(N?1N?13、Hamming窗 w(n)?[0.54?0.46cos(5、Kaiser窗 w(n)?I0(?1?[(2n(N?1)I0(?))?1]2

其中I0(?)是零阶贝塞尔函数。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 各种窗函数的性能指标

窗函数 窗 过渡带宽 旁瓣峰值(dB) 加窗后过渡带宽 4?/N -13 1.8?/N 加窗后最大衰减(dB) -21 -44 -53 -74 -80 矩形窗 8?/N -31 6.2?/N Hanning窗 8?/N -47 6.6?/N Hammin窗 12?/N -57 11?/N 10?/N 不确定 不确定 BlackmaKaise窗

(三)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

2

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

(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);

3

figure(2)

plot(f,m,w/pi,abs(h))

legend('Ideal','fir2 Designed')

title('Comparison of Frequency Response Magnitudes') 例题3:利用窗函数法设计一个线性相位的低通滤波器,性能指标为:通带截止频率为0.2pi,阻带起始频率为0.3pi,通带最大衰减为3dB,阻带最小衰减为40dB,编写程序实现,并绘制滤波器的幅频响应与相频响应。 wp=0.2*pi; ws=0.3*pi; wdelta=ws-wp;

N=ceil(8*pi/wdelta); wc=(wp+ws)/2;

b=fir1(N-1,wc/pi,hanning(N));

freqz(b,1,512)%求得频率响应,分子为b,分母为1 (四)FDATool设计数字滤波器:

在 MATLAB 命令窗口中输入 fdatool,即可启动FDATool 工具,出现一个综合、操作简单的图形用户界面。FDATool 界面分为上下两大区域,一是设计区:用于设置待设计的数字滤波器各种参数,位于界面的下半部分;二是显示区:用于显示所设计的数字滤波器各种特性,位于界面的上半部分。

1、在FDATool 界 面 设 计 区 的 Response Type 选 项 中 选 择Lowpass,在 Design Method 选项中选择FIR ,Window选择 。然后,在 Filter Order 选项中选择11。最后,分别在 Frequency Specifications 选项中设置 Units 为 normalized(0 to 1),wc为0.6。设置完毕后,点击 Design Filter 按钮即可完成 FIR低通数字滤波器的设计,并在 FDATool 的 Filter Specifications 显示区呈现出滤波器的幅频响应 三、实验内容

1、利用fir1和三角窗(triang)和汉宁窗(hanning)窗函数分别设计一个N=51,截止频率为wc=0.5?的低通滤波器,分别画出冲激响应曲线和幅频响应曲线。

2、利用fir1及blackman窗设计一个N=52,ws1=0.3?、ws2=0.4?带阻滤波器,画出幅频响应及相频响应。 提示: ws=[0.3,0.4]

h=fir1(N-1,ws,’stop’,blackman(N));

3、s=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30),信号中包含了5Hz、15Hz、30Hz频率分量,对其采样的频率取100Hz。带通滤波器要把低频5Hz分量滤掉,因此取样频率为fs=100Hz,由wp1=0.35*pi;wp2=0.65*pi;ws1=0.2*pi;ws2=0.8*pi 过渡带宽:

8?,得出滤波器的阶数M。 M注意:带通滤波器过渡带带宽的求法min((wp1-ws1),(ws2-wp2)) 理想带通滤波器的下截止频率: (wp1+ws1)/2/pi 理想带通滤波器的上截止频率:(wp2+ws2)/2/pi

要求:画出带通滤波器幅频响应、相频特性、滤波前后波形的频谱。 四、思考题

如果没有给定h(n)长度N,而是给定了通带边缘截止频率ws阻带临界频率wc以及相应的衰 减,你能根据这些条件用窗函数法设计线性相位FIR低通滤波器吗?

4

5

本文来源:https://www.bwwdw.com/article/l4dt.html

Top