基于频域抽样法的FIR数字带阻滤波器设计
clear all;
N=41;
T1=0.598;
alpha= (N-1)/2;
l=0:N-1;
wl= (2*pi/N)*l;
Hrs=[ones(1,6),T1,zeros(1,7),T1,ones(1,11),T1,zeros(1,7),T1,ones(1,6)]; %理想振幅采样响应
Hdr=[1,1,0,0,1,1];
wdl=[0,0.3,0.3,0.7,0.7,1];
k1=0:floor((N-1)/2);
k2=floor((N-1)/2)+1:N-1;
angH=[pi/2-alpha*(2*pi)/N*(k1+0.5),-pi/2+alpha*(2*pi)/N*(N-k2-0.5)]; %相位约束条件
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]);
[Hr,ww,a,L]=hr_type3(h); %实际振幅响应
subplot(221)
plot(wl/pi+1/N,Hrs,’.',wdl,Hdr)
title(‘频率样本Hd(k) :N=41′)
axis([0 1 -0.1 1.2])
subplot(222)
stem(l,h)
title(‘实际单位脉冲响应h(n)’)
subplot(223)
plot(ww/pi,Hr,wl/pi+1/N,Hrs,’.')
title(‘实际振幅响应H(w)’)
axis([0 1 -0.1 1.2])
subplot(224)
plot(w/pi,db)
title(‘幅度响应(dB)’)
axis([0 1 -80 10])
function [db,mag,pha,w] = freqz_m(b,a);
%滤波器的幅值响应(相对、绝对)、相位响应
%db:相对幅值响应
%mag:绝对幅值响应
%pha: 相位响应
%w 采样频率;
%b 系统函数H(z)的分子项(对FIR,b=h)
%a 系统函数H(z)的分母项(对FIR,a=1)
[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);
% pha = unwrap(angle(H));
function [Hr,w,c,L]=hr_type3(h);
%计算所设计的3型滤波器的振幅响应
%Hr=振幅响应
%b=3型滤波器的系数
%L=Hr的阶次
%h=3型滤波器的单位冲击响应
M=length(h);
L=(M-1)/2;
c= [2*h(L+1:-1:1)];
n=[0:1:L];
w=[0:1:500]‘*2*pi/500;
Hr=sin(w*n)*c’;
