根据窗函数利用MATLAB设计FIR低通滤波器,并绘制各滤波器的幅度响应曲线。

根据下表中所示的各种窗函数,利用MATLAB分别设计设计截止频率为200Hz、采样频率为2000Hz的FIR低通滤波器,滤波器长度为81(80阶),绘制个滤波器的幅度频率响应曲线。

N = 81;                 %滤波器长度
fs = 2000;              %采样频率
fc = 200;               %低通滤波器的截止频率

%生成各种窗函数
w_rect = rectwin(N)';
w_hann = hann(N)';
w_hamm = hamming(N)';
w_blac = blackman(N)';
w_kais = kaiser(N,7.856)';

%采样fir1函数设计FIR滤波器
b_rect = fir1(N-1,fc*2/fs,w_rect);
b_hann = fir1(N-1,fc*2/fs,w_hann);
b_hamm = fir1(N-1,fc*2/fs,w_hamm);
b_blac = fir1(N-1,fc*2/fs,w_blac);
b_kais = fir1(N-1,fc*2/fs,w_kais);

%求滤波器的幅频响应
m_rect = 20*log(abs(fft(b_rect,512)))/log(10);
m_hann = 20*log(abs(fft(b_hann,512)))/log(10);
m_hamm = 20*log(abs(fft(b_hamm,512)))/log(10);
m_blac = 20*log(abs(fft(b_blac,512)))/log(10);
m_kais = 20*log(abs(fft(b_kais,512)))/log(10);

%设置幅频响应的横坐标为Hz
x_f = [0:(fs/length(m_rect)):fs/2];

%只显示正频率部分的幅频响应
m1 = m_rect(1:length(x_f));
m2 = m_hann(1:length(x_f));
m3 = m_hamm(1:length(x_f));
m4 = m_blac(1:length(x_f));
m5 = m_kais(1:length(x_f));

%绘制幅频响应曲线
plot(x_f,m1,'.',x_f,m2,'*',x_f,m3,'x',x_f,m4,'--',x_f,m5,'-.');
title('各滤波器幅度频率响应曲线');
xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);
legend('矩形窗','汉宁窗','海明窗','布拉克曼窗','凯赛窗');
grid;

从仿真结果看,相同滤波器阶数情况下的凯赛窗函数具有更好的性能。在设计的200Hz截止频率处,幅度衰减约为-6.4dB,滤波器的3dB带宽实际约为184.3Hz。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值