利用凯塞窗函数设计一个低通FIR滤波器

文章展示了如何使用fir2函数和fir1函数结合不同窗函数(海明窗、凯塞窗)设计FIR滤波器,并通过firpm实现最优滤波器。在MATLAB中,设计了具有特定幅度特性的滤波器,并比较了三种方法(凯塞窗、海明窗和firpm)设计的低通滤波器的幅度频率响应曲线,突出了最优滤波器的性能优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

% % % %E4_3_fir2.m
% 利用fir2函数设计120阶的FIR滤波器,
% 要求设计的滤波器在归一化频率0~0.125范围内幅度为1,
% 在0.125~0.25范围内幅度为0.5,在0.25~0.5范围内幅度为0.25,
% 在0.5~1范围内幅度为0.125.绘制处滤波器的频率响应曲线。
N = 120; %滤波器阶数
fc = [0 0.125 0.125 0.25 0.25 0.5 0.5 1]; %截止频率
mag = [1 1 0.5 0.5 0.25 0.25 0.125 0.125]; %理想滤波器幅度
b = fir2(N,fc,mag); %设计海明窗滤波器
freqz(b); %绘制频率响应曲线

% 利用凯塞窗函数设计一个低通FIR滤波器,过渡带为1000~1500Hz,

% 采样频率为8000Hz,通带纹波最大为0.01,阻带纹波最大为0.05。

% 利用海明窗及firpm函数设计相同的低通滤波器,截止频率为1500Hz,

% 滤波器阶数为凯塞窗函数求取的值。

% 绘出三种方法设计的幅度频率响应曲线。

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

figure
% % % %E4_4_FilterCompare.m
% 利用凯塞窗函数设计一个低通FIR滤波器,过渡带为1000~1500Hz,
% 采样频率为8000Hz,通带纹波最大为0.01,阻带纹波最大为0.05。
% 利用海明窗及firpm函数设计相同的低通滤波器,截止频率为1500Hz,
% 滤波器阶数为凯塞窗函数求取的值。
% 绘出三种方法设计的幅度频率响应曲线。
fs = 8000; %采样频率
fc = [1000 1500]; %过渡带
mag = [1 0]; %窗函数的理性滤波器幅度
dev = [0.01 0.05]; %纹波
[n,wn,beta,ftype] = kaiserord(fc,mag,dev,fs); %获取凯塞窗参数
fpm = [0 fc(1)*2/fs fc(2)*2/fs 1]; %firpm函数的频段向量
magpm = [1 1 0 0]; %firm函数的幅值向量

%设计凯塞窗及海明窗滤波器
h_kaiser = fir1(n,wn,ftype,kaiser(n+1,beta));
h_hamm = fir1(n,fc(2)*2/fs);

%设计最优滤波器
h_pm = firpm(n,fpm,magpm);

%求滤波器的幅频响应
m_kaiser = 20*log(abs(fft(h_kaiser,1024)))/log(10);
m_hamm = 20*log(abs(fft(h_hamm,1024)))/log(10);
m_pm = 20*log(abs(fft(h_pm,1024)))/log(10);

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

%只显示正频率部分的幅频响应
m1 = m_kaiser(1:length(x_f));
m2 = m_hamm(1:length(x_f));
m3 = m_pm(1:length(x_f));

%绘制幅频响应曲线
plot(x_f,m1,'-', x_f,m2,'-.', x_f,m3,'--');
xlabel('频率(Hz)'); ylabel('幅度(dB)');
legend('凯塞窗','海明窗','最优滤波器');
grid;

%本实例是采用窗函数设计低通滤波器的一般方法,

% 即采用kaiserord函数根据设计要求获取滤波器阶数等信息,

% 然后通过多种窗函数的设计进行对比,从而最终选择最好性能的滤波器。

% 从几种滤波器的幅频响应曲线可以看出,最有滤波器与凯塞窗滤波器相比,

% 最优滤波器的第一旁瓣电平约低2.5dB,且阻带波纹相同,

% 而凯塞窗的阻带波纹却逐渐减小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值