FIR滤波器设计与实现

更新时间:2024-06-28 18:53:01 阅读量: 综合文库 文档下载

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

FIR滤波器设计与实现

一、实验目的

(1) 通过实验巩固FIR滤波器的认识和理解。

(2) 熟练掌握FIR低通滤波器的窗函数设计方法。 (3) 理解FIR的具体应用。

二、实验内容

在通信、信息处理以及信号检测等应用领域广泛使用滤波器进行去噪和信号的增强。FIR滤波器由于可实现线性相位特性以及固有的稳定特征而等到广泛应用,其典型的设计方法是窗函数设计法。设计流程如下:

(1)设定指标:截止频率fc,过渡带宽度△f,阻带衰减A。 (2)求理想低通滤波器(LPF)的时域响应hd(n)。 (3)选择窗函数w(n),确定窗长N。

(4)将hd(n)右移(N-1)/2点并加窗获取线性相位FIR滤波器的单位脉冲响应h(n)。 (5)求FIR的频域响应H(e

jw),分析是否满足指标。如不满足,转(3)重新

选择,否则继续。

(6)求FIR的系统函数H(z)。

(7)依据差分方程由软件实现FIR滤波器或依据系统函数由硬件实现。

实验要求采用哈明窗设计一个FIR低通滤波器并由软件实现。哈明窗函数如下:

w(n)=0.54-0.46cos(

2?nN?1),0≤n≤N-1;

设采样频率为fs=10kHz。实验中,窗长度N和截止频率fc应该都能调节。具体实验内容如下:

(1)设计FIR低通滤波器(FIR_LPF)(书面进行)。 (2)依据差分方程编程实现FIR低通滤波器。

(3)输入信号x(n)=3.0sin(0.16?n)+cos(0.8?n)到fc=2000Hz,N=65的FIR_LPF,求输出信号y(n),理论计算并画出0≤f≤fs范围输入信号x(n)和输出信号y(n)的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。 (4)输入信号x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)到fc=1100Hz,N=65的FIR_LPF,求输出信号y(n),理论计算并画出0≤f≤fs范围输入信号x(n)和输出信号y(n)的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。 (5)输入信号x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)到fc=2100Hz,N=65的FIR_LPF,求输出信号y(n),理论计算并画出0≤f≤fs范围输入信号x(n)和输出信号y(n)的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。 (6)输入信号x(n)=1.5sin(0.2?n)-cos(0.4?n)+5.0sin(0.9?n)到fc=1100Hz,N=65的FIR_LPF,求输出信号y(n),理论计算并画出0≤f≤fs范围输入信号

x(n)和输出信号y(n)的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。 (7)输入信号x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)到fc=1990Hz,N=65的FIR_LPF,求输出信号y(n),理论计算并画出0≤f≤fs范围输入信号x(n)和输出信号y(n)的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。

三、实验分析

如果采用哈明窗函数设计因果线性相位低通滤波器FIR,所设计的FIR低通滤波器单位脉冲响应h(n)如式。

sin[wc(n?N?1h(n)=hd(n)w(n)=

?(n?2N?12)][0.54?0.46cos(2?nN?1)],0≤n≤N-1

)如果输入函数为x(n),则y(n)=x(n)*h(n)。

四、实验结果

(1)MATLAB 程序如下: N=66;

wc=1100*2*3.14/10000; for i=1:N

x(i)=1.5*sin(0.2*3.14*i)-cos(0.4*3.14*i)+1.2*sin(0.9*3.14*i);

h(i)=sin(wc*(i-(N-1)/2))/(3.14*(i-(N-1)/2))*(0.54-0.46*cos(2*3.14*i/(N-1)));

y =conv(x,h); end

subplot(4,1,1);plot((abs(fft(y))),'-*') subplot(4,1,2);plot((abs(fft(x))),'-*') subplot(4,1,3);plot((abs(fft(h))),'-*') disp(max((abs(fft(y))))); disp(max((abs(fft(x))))); Y=(abs(fft(y))); X=(abs(fft(x))); maxim=0; maxi=0; maxk=0; maxl=0; for k=1:N

if Y(k)>maxim maxim=Y(k);

maxk=k; end end

for l=1:N

if X(l)>maxi maxi=X(l); maxl=l; end end

disp((maxk-1)/66*10000) disp(maxk)

disp((maxl-1)/66*10000) disp(maxl)

subplot(4,1,4);plot(y,'-*')

(3) x(n)=3.0sin(0.16?n)+cos(0.8?n)

第一行为Y(ejw)

第二行为X(e第三行为H(e

jw) )

jw第四行为y(n)

当f=1515.2Hz时,峰值为90.9039

(4) x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

第一行为Y(ejw) 第二行为X(e第三行为H(e

jw) )

jw第四行为y(n)

当f=1969.7Hz时,峰值为42.3833

(5) x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

第一行为Y(ejw) 第二行为X(e第三行为H(e

jw) )

jw第四行为y(n)

当f=1969.7Hz时,峰值为50.9443

(6) x(n)=1.5sin(0.2?n)-cos(0.4?n)+5.0sin(0.9?n)

第一行为Y(ejw) 第二行为X(e第三行为H(e

jw) )

jw第四行为y(n)

当f=1969.7Hz时,峰值为43.5255

(7) x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

第一行为Y(ejw) 第二行为X(e第三行为H(e

jw) )

jw第四行为y(n)

当f=1969.7Hz时,峰值为50.9352

五、思考题

1、当哈明窗长度N比65小(32)或大(129)的话,实验结果如何变化? (1)当N=32时

A:x(n)=3.0sin(0.16?n)+cos(0.8?n)

B:x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

C:x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

D:x(n)=1.5sin(0.2?n)-cos(0.4?n)+5.0sin(0.9?n)

E x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

(2)当N=129时

A:x(n)=3.0sin(0.16?n)+cos(0.8?n)

B:x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

C:x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

D:x(n)=1.5sin(0.2?n)-cos(0.4?n)+5.0sin(0.9?n)

E x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

2、当采用矩形窗的话,实验(3)(4)的结果是怎样的? (3)x(n)=3.0sin(0.16?n)+cos(0.8?n)

矩形窗设计的FIR低通滤波器的单位脉冲响应为:

sin[wc(n?N?1h(n)=hd(n)w(n)=

?(n?2N?12)] ,0≤n≤N-1

)

(4)x(n)=1.5sin(0.2?n)-cos(0.4?n)+1.2sin(0.9?n)

六、总结

通过本次实验,我了解了FIR滤波器的设计与实现,熟悉MATLAB这一软件的应用。通过实践来巩固书本上的知识。

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

Top