资源简介

程序中以凯瑟窗作为窗口分别设计实现了各类滤波器(低通、带通、高通、带阻、双带通等),其中使用kaiserord函数设计fir滤波器的估算参数、kaiser函数生成凯瑟窗、fir1函数生成滤波器,并绘制出了各种滤波器的频率响应特性。备注对以上函数及涉及的参数进行了说明。

资源截图

代码片段和文件信息

clearclcclose all
% 加窗的优势:加窗可以有效的减少频谱泄露
% 基于窗函数的FIR滤波器设计;
% (1) 根据对阻带衰减以及过渡带的指标要求,选择窗函数类型(有:矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。
%     先按照阻带衰减选择窗函数类型。在保证阻带衰减满足要求的情况下,尽量选择主瓣集中的窗函数。
% (2) 构造希望逼近的频率响应函数
% (3) 计算h(n),有限长序列
% (4) 加窗得到设计结果
N=1024;         % 采样点数
fsamp = 8000;   % 采样频率
%% Kaiser窗口低通滤波器设计
fcuts = [1000 1500];                                   % 低通,4个参数(结合mags来看):表示(01000)区间内通,(10001500)过度,(1500fs/2)内阻;
mags = [1 0];                                          % 1/0表示通/阻
devs = [0.05 0.01];                                    % 表示各区段内纹波的波动;

[nwnbetaftype] = kaiserord(fcutsmagsdevsfsamp);  % Kaiser窗口FIR滤波器设计估算参数
window=kaiser(n+1beta);                               % 时域序列在时域图像上加窗而在频域上就是卷积了;
hh = fir1(nwnftypewindow‘noscale‘);                % fir1用来生成滤波器hh表示n阶滤波器多项式的系数noscale表示不归一化滤波器的幅度响应;

[Hf] = freqz(hh11024fsamp);
figureplot(fabs(H))title(sprintf(‘n=%d阶Kaiser窗口低通滤波器的频率响应‘n))xlabel(‘频率/Hz‘)ylabel(‘幅度‘);
grid on;
%% Kaiser窗口带通滤波器设计
fcuts = [1000 1300 2210 2410];                        % 带通,7个参数(结合mags来看):表示(01000)区间内阻,(10001300)过度,(13002210)通(22102410)过度(2410fs/2)内阻;
mags = [0 1 0];
devs = [0.01 0.05 0.01];

[nwnbetaftype] = kaiserord(fcutsmagsdevsfsamp);
window=kaiser(n+1beta);
hh = fir1(nwnftypewindow‘noscale‘);

[Hf] = freqz(hh11024fsamp);
figureplot(fabs(H))ti

评论

共有 条评论