例:用频率采样法设计一个 FIR 带通滤波器,技术指标:低阻带边缘频率
1 tw
2.0
,
低通带 边缘频率
1 pw
3.0
,通 带 边缘频率为
2 pw
7.0
,高阻 带边缘频率
2 tw
8.0
,通带最大波动
A
p
3.0
dB
,阻带最小衰减
A
s
d40
B
,采样点数 N=40。
用一般算法实现 FIR 滤波器的程序代码及仿真结果:
显示数字滤波器频率图形的子程序:
function[db,mag,pha,w]=freqz_m2(b,a)
[H,w]=freqz(b,a,1000,’whole’);
H=(H(1:1:501))’;
w=(w(1:1:501))’;
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
主函数:
clear all;
N=40;%抽样点数
al=(N-1)/2;
wl=(2*pi/N);%抽样间隔
k=0:N-1;
T1=0.5;%查表法得到的过渡值
k1=0:floor((N-1)/2);k2=floor((N-1)/2)+1:N-1;
angH=[pi/2-al*(2*pi)/N*(k1+0.5),-pi/2+al*(2*pi)/N*(N-k2-0.5)];
wdl=[0 0.3 0.3 0.7 0.7 1];
Hrs=[zeros(1,5),T1,ones(1,9),T1,zeros(1,9),T1,ones(1,9),T1,zeros(1,4)];
Hdk=Hrs.*exp(j*angH);%构成 Hd(k)
h1=ifft(Hdk,N);%傅里叶反变换
n=0:1:N-1;
h=real(h1.*exp(j*pi*n/N));%实际单位脉冲响应
[db,mag,pha,w]=freqz_m2(h,[1]);
plot(w/pi,db);
title('频谱特性');
xlabel('频率(xπrad / sample )');ylabel('衰减(dB)');
axis([0 1 -80 10]);
grid;
仿真结果: