基于 MATLAB 的 FIR 滤波器设计与滤波
摘要介绍了利用 MATLAB 信号处理工具箱进 FIR 滤波器设计的三种方法:程序设计法、FDATool 设计
法和 SPTool 设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤
波器的性能。
关键词MATLAB,数字滤波器,有限冲激响应,窗函数,仿真
1前言
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波
的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应
(FIR)滤波器。与 IIR 滤波器相比,FIR 的实现是非递归的,总是稳定的;更重要的是,FIR 滤波器在满
足幅频响应要求的同时,可以获得严格的线性相位特性。因此,它在高保真的信号处理,如数字音频、图
像处理、数据传输、生物医学等领域得到广泛应用。
2FIR 滤波器的窗函数设计法
FIR 滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。窗函数设计法
的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为:
(1)通过傅里叶逆变换获得理想滤波器的单位脉冲响应 hd(n)。
(2)由性能指标确定窗函数 W(n)和窗口长度 N。
(3)求得实际滤波器的单位脉冲响应 h(n),h(n)即为所设计 FIR 滤波器系数向量 b(n)。
(4)检验滤波器性能。
本文将针对一个含有 5Hz、15Hz 和 30Hz 的混和正弦波信号,设计一个 FIR 带通滤波器,给出利用
MATLAB 实现的三种方法:程序设计法、FDATool 设计法和 SPTool 设计法。参数要求:采样频率
fs=100Hz,通带下限截止频率 fc1=10 Hz,通带上限截止频率 fc2=20 Hz,过渡带宽 6 Hz,通阻带
波动 0.01,采用凯塞窗设计。
3 程序设计法
MATLAB 信号处理工具箱提供了各种窗函数、滤波器设计函数和滤波器实现函数。本文的带通滤波器
设计及滤波程序如下:
[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[0.01 0.01 0.01],100);
%得出滤波器的阶数 n=38,beta=3.4
w1=2*fc1/fs; w2=2*fc2/fs;%将模拟滤波器的技术指标转换为数字滤波器的技术指标
window=kaiser(n+1,beta);%使用 kaiser 窗函数
b=9r1(n,[w1 w2],window);使用标准频率响应的加窗设计函数 9r1
freqz(b,1,512);%数字滤波器频率响应
t = (0:100)/Fs;
评论1
最新资源