采用海明窗,设计FIR滤波器

该文详细介绍了如何在Matlab环境中利用fir1函数结合海明窗设计不同类型的FIR滤波器,包括低通、高通、带通和带阻滤波器。滤波器长度为41,采样频率2000Hz,具体设计了截止频率和通带,并展示了相应的脉冲响应和幅频响应图。
摘要由CSDN通过智能技术生成

采用海明窗,设计FIR滤波器

1、标准频率响应的 FIR 滤波器设计

在 Matlab 中,标准频率响应的 FIR 滤波器设计函数为 fir1,其调用形式为:

  • b = fir1(n,Wn)使用汉明窗来设计具有线性相位的n阶低通,带通或多频FIR滤波器。滤波器类型取决于Wn的元素数量。
  • b = fir1(n,Wn,ftype)设计低通,高通,带通,带阻或多频带滤波器,取决于ftype的值和Wn的元素数量。
  • b = fir1(___,window)使用window中指定的向量和上面语法中的任何参数设计滤波器。
  • b = fir1(___,scaleopt)scaleopt 指定是否归一化滤波器的幅度响应。

clc; % 清空命令行窗口
clear; %清空工作区
close all;

% fir1函数使用方法
b = fir1(48,[0.35 0.65]);
freqz(b,1,512)

figure
b1 = fir1(11,0.2);
plot(20*log(abs(fft(b1)))/log(10))

2、采用海明窗,设计 FIR 滤波器

% E4_1_fir1.m文件的源码

%

% 采用海明窗,分别设计长度为41(阶数为40)的低通(截止频率为200Hz)、

% 高通(截止频率为200Hz)、带通(通带为200~400Hz)、

% 带阻滤波器(阻带为200~400Hz)FIR滤波器,

% 采样频率为2000Hz,画出其脉冲响应及幅频响应图。

figure
% E4_1_fir1.m文件的源码
% 
% 采用海明窗,分别设计长度为41(阶数为40)的低通(截止频率为200Hz)、
% 高通(截止频率为200Hz)、带通(通带为200~400Hz)、
% 带阻滤波器(阻带为200~400Hz)FIR滤波器,
% 采样频率为2000Hz,画出其脉冲响应及幅频响应图。
N = 41; %滤波器长度
fs = 2000; %采样频率

%g各种滤波器的特征频率
fc_lpf = 200;
fc_hpf = 200;
fp_bandpass = [200 400];
fc_stop = [200 400];

%以采样频率的一半,对频率进行归一化处理
wn_lpf = fc_lpf*2/fs;
wn_hpf = fc_hpf*2/fs;
wn_bandpass = fp_bandpass*2/fs;
wn_stop = fc_stop*2/fs;

%采用fir1 函数涉及FIR滤波器
b_lpf = fir1(N-1,wn_lpf);
b_hpf = fir1(N-1, wn_hpf,"high");
b_bandpass = fir1(N-1,wn_bandpass,'bandpass');
b_stop = fir1(N-1,wn_stop,'stop');

%求滤波器的幅频响应
m_lpf = 20*log(abs(fft(b_lpf)))/log(10);
m_hpf = 20*log(abs(fft(b_hpf)))/log(10);
m_bandpass = 20*log(abs(fft(b_bandpass)))/log(10);
m_stop = 20*log(abs(fft(b_stop)))/log(10);

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

%绘制单位脉冲响应
subplot(421); stem(b_lpf); xlabel('n'); ylabel('h(n)');
title('低通滤波器的单位脉冲响应','FontSize',8);
subplot(423); stem(b_hpf); xlabel('n'); ylabel('h(n)');
title('高通滤波器的单位脉冲响应','FontSize',8);
subplot(425); stem(b_bandpass); xlabel('n'); ylabel('h(n)');
title('带通滤波器的单位脉冲响应','FontSize',8);
subplot(427); stem(b_stop); xlabel('n'); ylabel('h(n)');
title('带阻通滤波器的单位脉冲响应','FontSize',8);

%绘制幅频响应曲线
subplot(422); plot(x_f,m_lpf(1:length(x_f))); 
xlabel('频率(Hz)','FontSize',8); ylabel('幅度(dB)','FontSize',8);
title('低通滤波器的幅频响应','FontSize',8);

subplot(424); plot(x_f,m_hpf(1:length(x_f))); 
xlabel('频率(Hz)','FontSize',8); ylabel('幅度(dB)','FontSize',8);
title('高通滤波器的幅频响应','FontSize',8);

subplot(426); plot(x_f,m_bandpass(1:length(x_f))); 
xlabel('频率(Hz)','FontSize',8); ylabel('幅度(dB)','FontSize',8);
title('带通滤波器的幅频响应','FontSize',8);

subplot(428); plot(x_f,m_stop(1:length(x_f))); 
xlabel('频率(Hz)','FontSize',8); ylabel('幅度(dB)','FontSize',8);
title('带阻滤波器的幅频响应','FontSize',8);


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值