数字滤波器设计实验报告
刘古城 65100609
一、实验目的
研究数字滤波器的设计思想,理解数字频域,模拟频域的关系,掌握数字系统处理模拟信号的方法。
FIR数字滤波器设计:掌握窗函数设计FIR数字滤波器的方法,理解FIR的意义:线性相位。
二、实验原理
1、FIR的特点
(1)系统的单位冲击响应在有限个n值处不为零。
(2)对于稳定系统,系统函数在 | z |>0处收敛,极点全部在z=0处。
(3)结构上主要是非递归结构,没有输出到输入的反馈,但在个别结构中(如频率抽样结构)也包含反馈的递归部分‘
2、FIR滤波器的优点
(1)即具有严格的线性相位,又具有任意的幅度’
(2)FIR滤波器的抽样响应是有限长的,因而滤波器的性能稳定。
(3)只要经过一定的延时,任何非因果的有限长序列都能变成有限长的因果
的序列,因而能用因果系统来实现。
(4)FIR滤波器单位冲击响应是有限长的,因而可以进行快速傅立叶变换,
提高运算效率。
3、用窗函数设计FIR数字滤波器
对函数加窗处理,实际是用一个有限长函数来逼近原函数。常用的窗函数
有矩形窗、三角窗,汉宁窗、海明窗、布莱克曼窗、凯撒窗等。
三、实验要求
1、设计FIR数字低通滤波器,要求在不同窗口长度(N=15,33)下,分别求出h(n),画出相应的幅频特性和相频特性曲线,观察3dB带宽和20dB带宽,总结窗口长度N对滤波特性的影响。
2、对三个拟合三角函数进行滤波处理。
3、对含噪心电信号函数进行滤波处理。
四、实验内容
1、不同窗函数长度对于滤波特性的影响
fs=100,N=32;
n=0:N-1;t=n/fs;
f0=n*fs/N;
y=exp(-2*t);
z=fft(y);m=abs(z);
w1=blackman(N);
z1=w1'.*y;
x1=fft(z1),mo1=abs(x1);
subplot(1,2,1);
plot(f0,m/fs);
subplot(1,2,2);
plot(f0,mo1/fs)
运行结果
改变N值,令N=14,得到结果
2、对三个拟合三角函数进行滤波
clear;fs=2000;t=(1:1000)/fs;
x=10*cos(2*pi*30*t)+cos(2*pi*150*t)+5*cos(2*pi*600*t);
L=length(x);N=2^(nextpow2(L));Hw=fft(x,N);
figure(1);subplot(2,1,1);plot(t,x);
grid on;title('滤波前信号x');xlabel('时间/s');% 原始信号
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw));% 查看信号频谱
grid on;title('滤波前信号频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');
%% x_1=10*cos(2*pi*30*t)
Ap=1;As=60;% 定义通带及阻带衰减
dev=[(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];% 计算偏移量
mags=[1,0];% 低通
fcuts=[60,100];% 边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数
hh1=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_1=filter(hh1,1,x);% 滤波
x_1(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_1);N=2^(nextpow2(L));Hw_1=fft(x_1,N);
figure(2);subplot(2,1,1);plot(t(1:L),x_1);
grid on;title('x_1=10*cos(2*pi*30*t)');xlabel('时间/s');
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_1));% 查看信号频谱
grid on;title('滤波后信号x_1频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');
%% x_2=cos(2*pi*150*t)
Ap=1;As=60;% 定义通带及阻带衰减
dev=[10^(-As/20),(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];% 计算偏移量
mags=[0,1,0];% 带通
fcuts=[80,120,180,220];% 边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数
hh2=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_2=filter(hh2,1,x);% 滤波
x_2(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_2);N=2^(nextpow2(L));Hw_2=fft(x_2,N);
figure(3);subplot(2,1,1);plot(t(1:L),x_2);
grid on;title('x_2=cos(2*pi*150*t)');xlabel('时间/s');
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_2));% 查看信号频谱
grid on;title('滤波后信号x_2频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');
%% x_3=5*cos(2*pi*600*t)
Ap=1;As=60;% 定义通带及阻带衰减
dev=[10^(-As/20),(10^(Ap/20)-1)/(10^(Ap/20)+1)];% 计算偏移量
mags=[0,1];% 高通
fcuts=[500,550];% 边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数
hh2=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_3=filter(hh2,1,x);% 滤波
x_3(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_3);N=2^(nextpow2(L));Hw_3=fft(x_3,N);
figure(4);subplot(2,1,1);plot(t(1:L),x_3);
grid on;title('x_3=5*cos(2*pi*600*t)');xlabel('时间/s');
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_3));% 查看信号频谱
grid on;title('滤波后信号x_3频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');
运行结果
3、对含噪心电信号函数进行滤波处理。
clear
clc
close all;
fs=1000;N=500;
n=0:N-1;
t=n/1000;
x=ecg(100);
X=[x x x x x ];
u=sin(2*0.01*pi*t);
y=X+sin(2*30*pi*t)+sin(2*0.01*pi*t);
figure(1);subplot(222);
plot(t,y,t,u,':');title('心电+工频干扰函数图');
subplot(221);plot(t,X);
title('心电干前函数图')
f=n*fs/N;
figure(2);
subplot(221);plot(f,abs(fft(X)));title('心电干扰前幅度谱')
subplot(222);y1=fft(y);plot(f,abs(y1)/N);%axis([0 0.03 0 0.6]);
hold on
title('心电+工频干扰滤波前幅度谱')
wp=0.1;ws=0.2;rp=2;rs=30;
[n,wn]=buttord(wp,ws,rp,rs);
[b,a]=butter(n,wn,'high');
y2=filter(b,a,y);
figure(1);subplot(223);
plot(t,y2,'r');title('心电+工频干扰 滤波 后函数图')
y3=fft(y2);
figure(2);subplot(223);
plot(f,abs(y3)/N,'r');title('心电+工频干扰滤波后幅度谱')
figure(3);
[H,F]=freqz(b,a,512,fs);
mag=abs(H);
Hdb=20*log10(mag);
plot(F,Hdb);
grid on;
title('滤波器图');
运行结果
第二篇:FIR数字滤波器的设计实验报告
学生实验报告
课程名称 数字信号处理与应用 实验日期 2012 年 12 月 26 日
注:学生做每个实验都必须填写实验报告。实验报告可以是纸质的,也可以是电子形式的。凡电子文本形式的实验报告须在学期末刻录进该学期教学资料光盘并存个人教学档案。
实验指导教师签名 年 月 日