数字信号处理实验五.docx
- 文档编号:26676874
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:21
- 大小:593.96KB
数字信号处理实验五.docx
《数字信号处理实验五.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验五.docx(21页珍藏版)》请在冰豆网上搜索。
数字信号处理实验五
实验五FIR数字滤波器的设计
04011344王晨
一、实验目的
(1)掌握用窗函数法、频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的MATLAB编程。
(2)熟悉线性相位FIR滤波器的幅频特性和相频特性。
(3)了解各种不同窗函数对滤波器性能的影响。
二、实验原理
1线性相位实系数FIR滤波器按其N值奇偶和h(n)的奇偶对称性分为四种:
1、h(n)为偶对称,N为奇数;H(ejω)的幅值关于ω=0,π,2π成偶对称。
2、h(n)为偶对称,N为偶数;H(ejω)的幅值关于ω=π成奇对称,不适合作高通。
3、h(n)为奇对称,N为奇数;H(ejω)的幅值关于ω=0,π,2π成奇对称,不适合作高通和低通。
4、h(n)为奇对称,N为偶数;H(ejω) ω=0、2π=0,不适合作低通。
2 窗口法
窗函数法设计线性相位FIR滤波器步骤:
Ø确定数字滤波器的性能要求:
临界频率
,滤波器单位脉冲响应长度N;
Ø根据性能要求,合理选择单位脉冲响应
的奇偶对称性,从而确定理想频率响应
的幅频特性和相频特性;
Ø求理想单位脉冲响应
,在实际计算中,可对
按M(M远大于N)点等距离采样,并对其求IDFT得
,用
代替
;
Ø选择适当的窗函数
,根据
求所需设计的FIR滤波器单位脉冲响应;
Ø求
,分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。
窗函数的傅式变换
的主瓣决定了
过渡带宽。
的旁瓣大小和多少决定了
在通带和阻带范围内波动幅度,常用的几种窗函数有:
(1)矩形窗(Rectangle Window)
(2)汉宁(Hanning)窗,又称升余弦窗
(3)汉明(Hamming)窗,又称改进的升余弦窗
(4)布莱克曼(Blankman)窗,又称二阶升余弦窗
(5)
凯塞(Kaiser)窗b
其中:
β是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,β越大,过渡带越宽,阻带越小衰减也越大。
第一类修正零阶贝塞尔函数。
3频率采样法
频率采样法是从频域出发,将给定的理想频率响应
)加以等间隔采样,然后以此
作为实际 FIR 数字滤波器的频率特性的采样值
由
通过 IDFT 可得有限长序列
, 然后进行 DTFT 或 Z 变换即可得
。
4FIR滤波器的优化设计
FIR滤波器的优化设计是按照最大误差最小化准则,使所设计的频响与理想频响之间的最大误差,在通带和阻带范围均为最小,而且是等波动逼近的。
为了简化起见,在优化设计中一般将线性相位FIR滤波器的单位脉冲响应)(nh的对称中心置于n=0处,此时,线性相位因子α=0。
令N=2M+1,则
如希望逼近一个低通滤波器,这里
固定为某个值。
在这种情况下有
定义一逼近误差函数:
E(ω)为在希望的滤波器通带和阻带内算出的误差值,W(ω)为加权函数,
根据数学上多项式逼近连续函数的理论,用三角多项式逼近连续函数,在一定条件下存在最佳逼近的三角多项式,而且可以证明这个多项式是唯一的。
这一最佳逼近定理通常称作交替定理。
这一算法通常称作雷米兹(Remez)交替算法。
三、实验内容
(1)N=45,计算并画出矩形窗、汉明窗、布莱克曼的归一化的幅度谱,并比较各自的主要特点。
程序代码:
clear all;
N=45;
w1=boxcar(N);w2=hamming(N);w3=blackman(N);
[h,w]=freqz(w1,N);
figure
(1);
plot(w/pi,20*log10(abs(h)));
axis([0,1,-80,10]);
grid on;
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('矩形窗');
figure
(2);
[h,w]=freqz(w2,N);
plot(w/pi,20*log10(abs(h)));
axis([0,1,-80,10]);
grid on;
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('汉明窗');
figure(3);
[h,w]=freqz(w3,N);
plot(w/pi,20*log10(abs(h)));
axis([0,1,-150,10]);
grid on;
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('布莱克曼窗');
运行结果:
Figure1-1
Figure1-2
Figure1-3
分析:
矩形窗函数具有最窄的主瓣宽度,但有最大的旁瓣峰值;汉明窗函数的主瓣稍宽,而旁瓣较小;布莱克曼窗函数则更甚之。
矩形窗设计的滤波器过渡带最窄,但是阻带最小衰减也最差; 布莱克曼窗设计的滤波器阻带衰减最好,过渡带最宽,约为矩形窗设计的的三倍。
汉明窗设计的滤波器处于矩形窗和布莱克曼窗之间。
(2)N=15,带通滤波器的两个通带边界分别是
。
用汉宁窗设计此线性相位带通滤波器,观察它的实际3dB和20dB带宽。
N=45,重复这一设计,观察幅频和相位特性的变化,注意长度N变化的影响。
程序代码:
clear all;
N=15;w1=0.3;w2=0.5;
w=hanning(N);
n=0:
N-1;alfa=(N-1)/2; h=fir1(N-1,[w1 w2],w);[h1,w3]=freqz(h,1); figure
(1);
subplot(2,1,1);
plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);
xlabel('归一化频率/π');ylabel('幅度/dB');
subplot(2,1,2);
plot(w3/pi,angle(h1));grid on; axis([0,1,-4,4]);
xlabel('归一化频率/π');ylabel('角度/rad');
N=45;w=hanning(N);n=0:
N-1;alfa=(N-1)/2;h=fir1(N-1,[w1 w2],w); [h1,w3]=freqz(h,1);
figure
(2);
subplot(2,1,1);
plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]); xlabel('归一化频率/π');
ylabel('幅度/dB'); subplot(2,1,2);plot(w3/pi,angle(h1));grid on;
axis([0,1,-4,4]); xlabel('归一化频率/π');ylabel('角度/rad');
运行结果:
Figure2-1
Figure2-2
分析:
可见N增大,其3db带宽和20db带宽分别减小,滤波器特性变好,过渡带变陡,幅频曲线显示其通带较平缓,波动小,阻带衰减大。
相频特性曲线显示其相位随频率变化也变大。
(3)分别改用矩形窗和布莱克曼窗,设计
(2)中的带通滤波器,观察并记录窗函数对滤波器幅频特性的影响,比较三种窗的特点。
程序代码:
clear all;
N=15;
w1=0.3;
w2=0.5;
wn1=boxcar(N);
wn2=blackman(N);
hn1=fir1(N-1,[w1 w2],wn1);
hn2=fir1(N-1,[w1 w2],wn2);
[h1,w3]=freqz(hn1,1);figure
(1);
plot(w3/pi,20*log10(abs(h1)));
grid on;
axis([0,1,-80,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('矩形窗,N=15');
[h1,w3]=freqz(hn2,1);
figure
(2);
plot(w3/pi,20*log10(abs(h1)));
grid on;
axis([0,1,-80,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('布莱克曼窗,N=15');N=45;
wn1=boxcar(N);
wn2=blackman(N);
hn1=fir1(N-1,[w1 w2],wn1);
hn2=fir1(N-1,[w1 w2],wn2);
[h1,w3]=freqz(hn1,1);
figure(3);
plot(w3/pi,20*log10(abs(h1)));
grid on;
axis([0,1,-80,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('矩形窗,N=45');
[h1,w3]=freqz(hn2,1);
figure(4);
plot(w3/pi,20*log10(abs(h1)));
grid on;
axis([0,1,-110,10]);
xlabel('归一化频率/π');
ylabel('幅度/dB');
title('布莱克曼窗,N=45');
运行结果:
Figure3-1Figure3-2
Figure3-3Figure3-4
分析:
同一N值,分别用矩形窗,汉宁窗,汉明窗,布莱克曼窗设计滤波器时,主瓣宽度逐渐增大,过渡带变宽,但阻带衰减性能变好;N增加,主瓣变窄,旁瓣的分量增加,过渡带变陡,起伏震荡变密。
加窗处理对滤波器的频率响应会产生以下主要影响:
Ⅰ使理想特性不连续的边沿加宽,形成一过渡带,过渡带的宽度取决于窗函数频谱的主瓣宽度。
Ⅱ在过渡带两旁产生肩峰和余振,它们取决于窗函数频谱的旁瓣;旁瓣越多,余振也越多;旁瓣相对值越大,肩峰则越强。
Ⅲ增加截断长度N,只能缩小窗函数频谱的主瓣宽度而不能改变旁瓣的相对值;旁瓣与主瓣的相对关系只决定于窗函数的形状。
因此增加N,只能相对应减小过渡带宽。
而不能改变肩峰值。
肩峰值的大小直接决定通带内的平稳和阻带的衰减,对滤波器性能有很大关系。
(4)用凯塞窗设计一专用线性相位滤波器,N=40,
如实验图四图,当
时,分别设计、比较它们的幅频和相频特性,注意
取不同值时的影响。
程序代码:
clear all;
%beta=4;
Wd=[0.2 0.4 0.6 0.8];
M=39;
beta=4;
hh = fir1(M, Wd, 'DC-0', kaiser(M+1,beta));
[H, w] = freqz(hh, 1);
figure; subplot(2,1,1);
plot(w/pi,abs(H)); xlabel('\omega/\pi'); ylabel('幅度'); grid;title('幅频特性, beta=4');
subplot(2,1,2);
plot(w/pi,angle(H)); xlabel('\omega/\pi'); ylabel('弧度'); grid;title('相频特性');
%beta=6;
Wd=[0.2 0.4 0.6 0.8];
M=39;
beta=6;
hh = fir1(M, Wd, 'DC-0', kaiser(M+1,beta));
[H, w] = freqz(hh, 1);
figure;
subplot(2,1,1);
plot(w/pi,abs(H)); xlabel('\omega/\pi');ylabel('幅度'); grid;title('幅频特性, beta=6');
subplot(2,1,2);
plot(w/pi,angle(H));xlabel('\omega/\pi'); ylabel('弧度'); grid;title('相频特性');
%beta=10;
Wd=[0.2 0.4 0.6 0.8];
M=39;
beta=10;
hh = fir1(M, Wd, 'DC-0', kaiser(M+1,beta));
[H, w] = freqz(hh, 1);
figure;
subplot(2,1,1);
plot(w/pi,abs(H)); xlabel('\omega/\pi'); ylabel('幅度'); grid; title('幅频特性, beta=10');
subplot(2,1,2);
plot(w/pi,angle(H));xlabel('\omega/\pi'); ylabel('弧度'); grid; title('相频特性');
运行结果 :
Figure4-1
Figure4-2
Figure4-3
分析:
β越大,w(n)窗越窄,频谱的旁瓣越小,但主瓣宽度也相应增加,过渡带变宽,相位特性变好。
(5) 用频率采样法设计(4)中的滤波器,过渡带分别设一个过渡点,令H(k)=0.5。
比较两种不同方法的结果。
程序代码:
clear all;
N=45;
k=0:
N-1;
for k=0:
N-1w=2*pi/N*k;
hk(1,k+1)=0;
if ((w>=0.2*pi) && (w<=0.4*pi))||(w>=0.6*pi && w<=0.8*pi)||(w>=1.2*pi && w<=1.4*pi)||(w>=1.6*pi && w<=1.8*pi);
hk(1,k+1)=1;end;end;
k=0:
N-1;hk(1,5)=0.5;
hk(1,11)=0.5;hk(1,14)=0.5;hk(1,20)=0.5;hk(1,27)=0.5; hk(1,33)=0.5;hk(1,36)=0.5;
hk(1,42)=0.5;
thetak=-k*2*pi/N*((N-1)/2);
hk1=hk.*exp(j*thetak);
hn=ifft(hk1);
[h1,w1]=freqz(hn,1);
plot(w1/pi,20*log10(abs(h1)));
grid on; axis([0,1,-80,10]);xlabel('归一化频率/π');ylabel('幅度/dB');
运行结果:
Figure5
(6)用雷米兹(Remez)交替算法设计(4)中的滤波器,并比较(4)、(5)、(6)三种不同方法的结果。
程序代码:
clear all;
N=40;
M=N-1;
f=[0 0.15 0.2 0.4 0.45 0.55 0.6 0.8 0.85 1];
a=[0 0 1 1 0 0 1 1 0 0];
weight=[2 1 2 1 2];
h=remez(M,f,a,weight);
[H,w]=freqz(h,1);
plot(w/pi,20*log10(abs(H)));
grid;
xlabel('归一化频率/\pi');
ylabel('幅度/dB');
运行结果:
Figure6
(7) 利用雷米兹(Remez)交替算法,设计一个线性相位高通FIR数字滤波器,
其指标为:
fc=800Hz,δ=1dB,Hzfr500=,At=40dB,fs=5000Hz。
程序代码:
clear all;
f=[500 800];
fs=5000;a=[0 1];
dev=[0.009 0.1];
[M,fpts,mag,wt]=remezord(f,a,dev,fs);
h=remez(M,fpts,mag,wt);
[H,w]=freqz(h,1);
plot(w*2500/pi,20*log10(abs(H)));
grid;xlabel('幅频/Hz');ylabel('幅度');
运行结果:
Figure7
四、思考题
(1)定性地说明用本实验程序设计的FIR滤波器的3dB截止频率在什么位置?
它等于理想频率响应
的截止频率吗?
答:
三分贝截止频率在主瓣内,幅度为最大幅度的一半的位置。
它理论上不等于理想频率响应的截止频率,因为加了窗函数,频域上相当于是理想频率响应乘以窗函数,因此不一样。
实验中读出的3db带宽刚好和给的数值一样只是因为读书的误差,由图读得比较不精确。
(2)如果没有给定
的长度N,而是给定了通带边缘截止频率
和阻带临界频率
,以及相应的衰减,能根据这些条件用窗函数法设计线性相位FIR低通滤波器吗?
答:
可以,先根据不同窗函数的最小阻带衰减不同来选择适合(有不同的选择方法,只要符合条件即可)的窗函数,再利用主瓣宽,计算出N的值,再按前面的方法进行设计即可。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验