数字滤波器设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字滤波器设计实验报告
实验目的
研究数字滤波器的设计思想,理解数字频域,模拟频域的关系,掌握数字系统处理模拟信号的方法。
FIR数字滤波器设计:掌握窗函数设计FIR数字滤波器的方法,理解FIR 的意义:线性相位。
1、实验原理
1、FIR的特点
(1)系统的单位冲击响应在有限个n值处不为零。
(2)对于稳定系统,系统函数在| z |>0处收敛,极点全部在z=0处。(3)结构上主要是非递归结构,没有输出到输入的反馈,但在个别结构中(如频率抽样结构)也包含反馈的递归部分‘
2、FIR滤波器的优点
(1)即具有严格的线性相位,又具有任意的幅度’
(2)FIR滤波器的抽样响应是有限长的,因而滤波器的性能稳定。
(3)只要经过一定的延时,任何非因果的有限长序列都能变成有限长的因果的序列,因而能用因果系统来实现。
(4)FIR滤波器单位冲击响应是有限长的,因而可以进行快速傅立叶变换,提高运算效率。
3、用窗函数设计FIR数字滤波器
对函数加窗处理,实际是用一个有限长函数来逼近原函数。常用的窗函数有矩形窗、三角窗,汉宁窗、海明窗、布莱克曼窗、凯撒窗等。
2、实验要求
1、设计FIR数字低通滤波器,要求在不同窗口长度(N=15,33)下,分别求出h(n),画出相应的幅频特性和相频特性曲线,观察3dB带宽和20dB带宽,总结窗口长度N对滤波特性的影响。
2、对三个拟合三角函数进行滤波处理。
3、对含噪心电信号函数进行滤波处理。
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滤波器阶数