FIR数字滤波器设计与使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程名称:数字信号处理指导老师:刘英成绩:_________________ 实验名称:FIR数字滤波器设计与使用同组学生姓名:__________
一、实验目的和要求
设计和应用FIR低通滤波器。掌握FIR数字滤波器的窗函数设计法,了解设计参数(窗型、窗长)的影响。
二、实验内容和步骤
编写MATLAB程序,完成以下工作。
2-1 设计两个FIR低通滤波器,截止频率ωC=0.5π。
(1)用矩形窗,窗长N=41。得出第一个滤波器的单位抽样响应序列h1(n)。记下h1(n)的各个抽样值,显示h1(n)的图形(用stem(.))。求出该滤波器的频率响应(的N个
抽样)H1(k),显示|H1(k)|的图形(用plot(.))。
(2)用汉明窗,窗长N=41。得出第二个滤波器的单位抽样响应序列h2(n)。记下h2(n)的各个抽样值,显示h2(n)的图形。求出滤波器的频率响应H2(k),显示|H2(k)|的图形。
(3)由图形,比较h1(n)与h2(n)的差异,|H1(k)|与|H2(k)|的差异。
2-2 产生长度为200点、均值为零的随机信号序列x(n)(用rand(1,200)-0.5)。显示x(n)。求出并显示其幅度谱|X(k)|,观察特征。
2-3 滤波
(1)将x(n)作为输入,经过第一个滤波器后的输出序列记为y1(n),其幅度谱记为|Y1(k)|。
显示|X(k)|与|Y1(k)|,讨论滤波前后信号的频谱特征。
(2)将x(n)作为输入,经过第二个滤波器后的输出序列记为y2(n),其幅度谱记为|Y2(k)|。
比较|Y1(k)|与|Y2(k)|的图形,讨论不同的窗函数设计出的滤波器的滤波效果。
2-4 设计第三个FIR低通滤波器,截止频率ωC=0.5π。用矩形窗,窗长N=127。用它对x(n)进行滤波。显示输出信号y3(n)的幅度谱|Y3(k)|,并与|Y1(k)|比较,讨论不同的窗长设计出的滤波器的滤波效果。
三、主要仪器设备
自行编程。
四、操作方法和实验步骤
(参见“二、实验内容和步骤”)
五、实验数据记录和处理
5.1 列出MATLAB程序清单,加注释。
%% 2-1
clear; close all; clc
% the length of window = 41
wc = 0.5*pi;
N = 41;
n = 0:N-1;
h1 = fir1(N-1,wc/pi,boxcar(N));
[H1,w1] = freqz(h1);
h2 = fir1(N-1,wc/pi);
[H2,w2] = freqz(h2);
figure;
subplot(1,2,1);
stem(n,h1,'filled');grid on;
xlabel('n','FontSize',14);ylabel('h1(n)','FontSize',14);
title('矩形窗得到的低通滤波器h1(n)的时域','FontSize',14);
subplot(1,2,2);
stem(n,h2,'filled');grid on;axis([0 30 -0.2 0.6]);
xlabel('n','FontSize',14);ylabel('h2(n)','FontSize',14);
title('矩形窗得到的低通滤波器h2(n)的时域','FontSize',14);
figure;
subplot(1,2,1);
plot(w1/pi,abs(H1));grid on;
xlabel('\omega /\pi','FontSize',14);ylabel('|H1(k)|','FontSize',14);
title('矩形窗得到的低通滤波器h1(n)的幅度谱','FontSize',14);
subplot(1,2,2);
plot(w2/pi,abs(H2));grid on;
xlabel('\omega /\pi','FontSize',14);ylabel('|H2(k)|','FontSize',14);
title('矩形窗得到的低通滤波器h2(n)的幅度谱','FontSize',14);
figure;
subplot(1,2,1);
plot(w1/pi,20*log10(abs(H1)));grid on;axis([0 1 -100 20]);
xlabel('\omega
/\pi','FontSize',14);ylabel('20lg|H1(k)|/dB','FontSize',14);
title(' h1(n)的幅度谱','FontSize',14);
subplot(1,2,2);
plot(w2/pi,20*log10(abs(H2)));grid on;
xlabel('\omega
/\pi','FontSize',14);ylabel('20lg|H2(k)|/dB','FontSize',14);
title(' h2(n)的幅度谱','FontSize',14);
pause;
%% 2-2
N = 200;
n = 0:N-1;
x = rand(1,N)-0.5;
[X,w] = freqz(x);
figure;
subplot(2,1,1);
stem(n,x,'filled');grid on;
xlabel('n','FontSize',14);ylabel('x(n)','FontSize',14);
title('随机序列x(n)的时域','FontSize',14);
subplot(2,1,2);
plot(w/pi,abs(X));grid on;
xlabel('\omega /\pi','FontSize',14);ylabel('|X(k)|','FontSize',14); title('随机序列x(n)的幅度谱','FontSize',14);
pause;
%% 2-3
y1 = filter(h1,1,x);
[Y1,w1] = freqz(y1);
y2 = filter(h2,1,x);
[Y2,w2] = freqz(y2);
figure;
subplot(2,1,1)
plot(w1/pi,abs(Y1));grid on;axis([0 1 0 12]);set(gca,'ytick',0:4:12); xlabel('\omega /\pi','FontSize',14);ylabel('|Y1(k)|','FontSize',14); title('输出信号y1(n)的幅度谱','FontSize',14);
subplot(2,1,2);
plot(w2/pi,abs(Y2));grid on;axis([0 1 0 12]);set(gca,'ytick',0:4:12); xlabel('\omega /\pi','FontSize',14);ylabel('|Y2(k)|','FontSize',14); title('输出信号y2(n)的幅度谱','FontSize',14);
pause;