基于MATLAB的布莱克曼窗FIR数字低通滤波器设计程序
- 格式:doc
- 大小:22.00 KB
- 文档页数:2
wst=0.5*pi;wp=0.3*pi;deltaw=wst-wp;%过渡带宽△w的计算
N0=ceil(11*pi/deltaw);%按布莱克曼窗计算所需的滤波器长度N0
N=N0+mod(N0+1,2);%为了实现第一类偶对称滤波器,应确保其长度N为奇数n=[0:1:N-1];
wc=(wst+wp)/2;%截止频率取为两边缘频率的平均值
hd=ideallp(wc,N);%求理想脉冲响应
wdbla=(blackman(N))';%求窗函数
h=hd.*wdbla;%设计的脉冲响应应为理想脉冲响应与窗函数乘积
[db,mag,pha,grd,w]=myfreqz(h,[1]);%对设计结果进行检验
dw=2*pi/2000;%频率分辨率
Rp=-(min(db(1:wp/dw+1)))%检验通带波动
As=-round(max(db(wst/dw+1:501)))%检验最小阻带衰减
figure(1)
subplot(2,2,1);stem(n,wdbla);title('布莱克曼窗')%绘制布莱克曼窗函数axis([0 N-1 0 1.1]);ylabel('w(n)');text(N+1,0,'n')
subplot(2,2,2);stem(n,h);title('实际脉冲响应')%绘制实际脉冲响应axis([0 N-1 -0.4 0.5]);xlabel('n');ylabel('h(n)')
subplot(2,2,3);plot(w/pi,db);%绘制幅度响应
title('幅度响应(单位:dB)');grid;
xlabel('频率(单位: pi)');ylabel('分贝数')
axis([0 1 -150 10]);
set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,0.65,0.8,1])
set(gca,'YTickMode','manual','YTick',[-60,0])
n=0:6000;k=n/2000;
f1=2*pi*350;
f2=2*pi*600;
x=sin(f1*k)+sin(f2*k);
y=filter(h,[1],x);
x1=sin(f1*k);
x2=sin(f2*k);
figure(2)
subplot(2,2,1);plot(x1);title('x1的图形');
grid;
axis([0 100*pi -5 5]);
ylabel('x1');
subplot(2,2,2);plot(x2);title('x2的图形');
grid;
axis([0 100*pi -5 5]);
ylabel('x2)');
subplot(2,2,3);plot(x);title('x的图形');
grid;
axis([0 100*pi -5 5]);
ylabel('x');
subplot(2,2,4);plot(y);title('y的图形'); grid;
axis([0 100*pi -5 5]);
ylabel('y');