matlab数字信号处理实验指导 下载本文

实验八 基于MATLAB的FIR数字滤波器设计

实验八 基于MATLAB的FIR数字滤波器设计

一、实验目的

1. 进一步熟悉FIR数字滤波器的理论知识。

2. 熟悉与FIR数字滤波器设计有关的MATLAB函数。 3. 学会通过MATLAB,利用窗函数法设计FIR数字滤波器。

二、实验原理

设计FIR滤波器实际上是要在满足线性相位的条件下,实现幅度响应的逼近。而一个FIR滤波器若是符合线性相位,则必须满足一定的条件,即:

一个FIR滤波器若是线性相位的,则其单位冲激响应必然满足 h(n)??h(N?1?n) n=0,1,…,N-1 h(n)是关于(N-1)/2对称(奇对称或偶对称) 即,

(1) h(n)是偶对称序列

N?1 ? ? ? ?

(1) h(n) 是奇对称(反对称)序列

?2??h?n??h?N?1?n?,0?n?N?1

N?1??? ? 2

???h?n???h?N?1?n???设滤波器要求的理想频率响应为Hd(ejw) , 那么FIR滤波器的设计问题在于

N?1n?0——寻找一系统函数H(z)??h(n)z?n ,使其频率响应H(e)?H(z)|z?ejw逼近

jwHd(ejw)。若要求FIR滤波器具有线性相位特性,则h(n)必须满足上节所述的对称条件。逼近的方法有三种:

窗口设计法(时域逼近);频率采样法Frequency-sampling(频域逼近);

33

最优化设计Optimum Equiripple(等波纹逼近)。

实验八 基于MATLAB的FIR数字滤波器设计

窗函数法又称傅立叶级数法,是设计FIR数字滤波器的最简单的方法。FIR数字滤波器的设计问题就是要使所设计的FIR数字滤波器的频率响应H(w)去逼近所要求的理想滤波器的响应Hd(w)。从单位采样响应序列来,就是使所设计滤波器的h(n)逼近理想单位采样响应序列hd(n),这可以用hd(n)和一个窗函数w(n)的乘积来得到。 (一)、设计原理。

窗函数设计FIR数字滤波器的步骤如下: (1)给定要求的频率响应函数Hd(w); (2)计算hd(n);

(3)根据过渡带宽及阻带最小衰减的要求,选定窗的性状以及窗的大小N; (4)根据所选择的合适的窗函数w(n)来修正hd(n),得到所设计的FIR数字滤波器的单位采样响应序列h (n)= hd(n) w(n),n=0,1,…,N-1 。 (二)、函数的应用

MATLAB中用fir1函数来设计具有标准频率响应的FIR滤波器。其调用方式: b=fir1(n,wn)——设计n阶低通FIR滤波器,返回的向量b为滤波器的系数(即h(n)的值),它的阶数为n+1;截止频率为wn(对π归一化后的值)。 b=fir1(n,wn,’hign’)——设计n阶高通FIR滤波器 b=fir1(n,wn,’low’)——设计n阶低通FIR滤波器 b=fir1(n,wn,’bandpass’)——设计n阶带通FIR滤波器 b=fir1(n,wn,’stop’)——设计n阶带阻FIR滤波器

b=fir1(n,wn,win)——输入参数win用来指定使用的窗函数的类型,其长度为n+1,缺省情况下,默认为汉明窗。

三、实验内容与步骤

1. 用矩形窗、三角窗、汉宁窗、汉明窗分别设计低通数字滤波器。信号采样频率为1000Hz,数字滤波器的截止频率为 100Hz,滤波器的阶数为80。

程序:

passrad=2*pi*100/1000;

w1=boxcar(81); %矩形窗 w2=triang(81); %三角窗 w3=hanning(81); %汉宁窗

34

实验八 基于MATLAB的FIR数字滤波器设计

w4=hamming(81); %矩形窗 n=1:1:81;

hd=sin(passrad*(n-41))./(pi*(n-41)); hd(41)= passrad/pi; h1=hd. *rot90(w1); h2=hd. *rot90(w2); h3=hd. *rot90(w3); h4=hd. *rot90(w4); [MAG1,RAD]=freqz(h1); [MAG2,RAD]=freqz(h2); [MAG3,RAD]=freqz(h3); [MAG4,RAD]=freqz(h4); subplot(2,2,1);

plot(RAD,20*log10(abs(MAG1))); grid on; subplot(2,2,2);

plot(RAD,20*log10(abs(MAG2))); grid on; subplot(2,2,3);

plot(RAD,20*log10(abs(MAG3))); grid on; subplot(2,2,4);

plot(RAD,20*log10(abs(MAG4))); grid on;

运行上面程序,并显示其图形。

2.编写MATLAB程序,利用窗函数法设计线性相位FIR低通数字滤波器,实现对模拟信号采样后进行数字低通滤波,对模拟信号的滤波要求如下:

通带截止频率:fp=2kHz;阻带截止频率:fs=3kHz; 阻带最小衰减:αs=40dB;

采样频率:Fs=10kHz

选择合适的窗函数及其长度,求出h(n),并画出幅频特性衰减曲线。

35

实验八 基于MATLAB的FIR数字滤波器设计

3.编写MATLAB程序,利用窗函数法设计一线性相位FIR数字低通滤波器,截止频率wc=0.2π,过渡带宽 △w<0.4π, 阻带衰减αs>40dB。

四、实验仪器设备

计算机,MATLAB软件

五、实验注意事项

根据要求独立编程设计。

六、思考题

1. 根据实验程序1的幅频特性曲线,分析不同窗函数下的幅频特性曲线有什么差别。

2. 根据实验内容2和3所编写程序的运行结果,讨论它们的幅频曲线是否符合设计要求?它们的h(n)有什么特点?

36