内容发布更新时间 : 2025/1/8 3:07:03星期一 下面是文章的全部内容请认真阅读。
实验五 FIR滤波器设计
一.实验内容
(1)认真复习 FIR 数字滤波器的基本概念,线性相位 FIR 滤波器的条件和特点、幅度函数特点、零点位置的基本特点与性质;窗函数设计法的基本概念与方法,各种窗函数的性能和设计步骤,线性相位 FIR 低通、高通、带通和带阻滤波器的设计方法,频率采样设计法的基本概念和线性相位的实现方法。
(2)掌握几种线性相位的特点,熟悉和掌握矩形窗、三角形窗、汉宁窗、海明窗、布莱克曼窗、 凯塞窗设计 IIR 数字滤波器的方法, 熟悉和掌握频率抽样设计法的线性相位的设计方法,并对各种线性相位的频率抽样法的设计给出调整和改进。
(3)熟悉利用 MATLAB 进行各类 FIR 数字滤波器的设计方法。 二.实验内容
a. 设线性相位 FIR 滤波器单位抽样响应分别为 h(n )={ -4,1, -1,- 2,5,6,5, -2, -1,1, -4} h(n)={ -4,1, -1,- 2,5,6,6,5,- 2, -1,1,- 4} h(n)={ -4,1,- 1, -2,5,0,- 5,2,1,- 1,4} h(n)={ -4,1, -1, -2,5,6,- 6, -5,2,1, -1,4}
分别求出滤波器的幅度频率响应 H(ω),系统函数 H(z)以及零极点分布,并绘制相应的波形和分布图。 在matlab中新建函数amplres,代码如下:
function[A,w,type,tao]=amplres(h) N=length(h);tao=(N-1)/2;
- 1 -
L=floor((N-1)/2); n=1:L+1;
w=[0:500]*2*pi/500;
if all(abs(h(n)-h(N-n+1))<1e-10)
A=2*h(n)*cos(((N+1)/2-n)'*w)-mod(N,2)*h(L+1); type=2-mod(N,2);
elseif all(abs(h(n)+h(N-n+1))<1e-10)&(h(L+1)*mod(N,2)==0) A=2*h(n)*sin(((N+1)/2-n)'*w); type=4-mod(N,2);
else error('错误,这不是线性相位滤波器!') end
对第一个单位抽样响应,在matlab中新建函数a1,代码如下:h1=[-4,1,-1,-2,5,6,5,-2,-1,1,-4]; M=length(h1);n=0:M-1;
[A,w,type,tao]=amplres(h1);type subplot(2,1,1),stem(n,h1); title('冲激响应h1');
ylabel('h(n)');xlabel('n'); subplot(2,1,2),plot(w/pi,A); ylabel('A');xlabel('\\pi'); title('·幅频响应'); figure rz=roots(h1) for i=1:8 r(i)=1/rz(i); end r'
zplane(h1,1); title('h1零极点图');
生成结果如下:
>>a1 type = 1 rz =
-0.9807 + 0.1956i -0.9807 - 0.1956i -0.5578 + 0.8300i
- 2 -
-0.5578 - 0.8300i 0.4052 + 1.2374i 0.4052 - 1.2374i 1.2169 + 0.0000i 0.8218 + 0.0000i 0.2390 + 0.7299i 0.2390 - 0.7299i ans =
-0.9807 + 0.1956i -0.9807 - 0.1956i -0.5578 + 0.8300i -0.5578 - 0.8300i 0.2390 + 0.7299i 0.2390 - 0.7299i 0.8218 + 0.0000i 1.2169 + 0.0000i
- 3 -