✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
⛄ 内容介绍
1 算法原理
低通FIR滤波器是一种用于信号处理的滤波器,用来滤除高频部分,只保留低频信号。FIR(Finite Impulse Response)表示有限脉冲响应,指滤波器的单位冲激响应是有限长度的。
低通FIR滤波器的设计过程通常涉及以下步骤:
- 确定设计规格:确定需要滤除的高频范围和所需的频率响应特性。这可以包括截止频率、通带增益、阻带衰减等。
- 设计滤波器系数:使用不同的设计方法来计算滤波器的系数,如窗函数法、频率采样法或优化算法(如最小二乘法)等。其中,窗函数法是常见且简单可行的方法之一,通过在时域上乘以一个窗函数来获得滤波器的频率响应。
- 确定窗函数或设计参数:选择适当的窗函数(如矩形窗、汉宁窗、布莱克曼窗等)或其他设计参数,以达到所需的频率响应特性。
- 滤波器实现:利用得到的滤波器系数,可以进行滤波器的实现,在时域对输入信号进行卷积操作或在频域通过FFT变换等方式进行滤波。
- 验证性能:根据设计规格和应用需求,验证滤波器的性能是否符合要求。可以通过模拟仿真、频率响应分析、滤波器输出的观测来评估滤波器的有效性。
低通FIR滤波器被广泛应用于信号处理领域,包括音频处理、图像处理、通信系统等,用于去除噪声、平滑信号、调整频率响应等方面。
2 算法流程
矩形窗(Rectangular Window)是最简单的窗函数,其在频域中对应于不加权的频率响应。它的主要特点是频域滤波器具有较宽的过渡带和较高的幅度旁瓣。
而汉明窗(Hamming Window)、汉宁窗(Hanning Window)和布莱克曼窗(Blackman Window)都是常用的窗函数,用于设计低通FIR滤波器时起到抑制频谱泄漏、改善频率响应性能的作用。
- 汉明窗:汉明窗采用了汉明函数作为窗函数,它在时域上呈现出类似于由两个相同幅值结构对称的部分正弦波组成的形状。汉明窗衰减了窗口两侧的振荡,并且在频域中相对平滑。它比矩形窗具有更好的频率响应抑制和幅度旁瓣衰减效果。
- 汉宁窗:汉宁窗也被称为汉宁函数窗或汉宁波浪窗,它采用了汉宁函数作为窗函数。在时域上,汉宁窗是一个由两个离散的正弦波组成的形状。相对于汉明窗,汉宁窗的频率响应在主瓣带宽和旁瓣衰减方面表现更好。
- 布莱克曼窗:布莱克曼窗是一种加权窗函数,使用了布莱克曼函数(Blackman function)。布莱克曼窗在时域上具有比汉明和汉宁窗更复杂的形状,在频域上具有更好的抑制旁瓣效果和较小的波纹。
以上窗函数都可以用于设计低通FIR滤波器,其中选择窗函数的依据主要取决于应用的具体需求。根据频率响应的平滑程度和旁瓣衰减要平衡频域性能和时域分辨率。
⛄ 部分代码
clear,clc,close all
% 汉明窗,汉宁窗,布莱克曼窗 设计低通滤波器
%% 原始信号参数
fs=1000;
Ts=1/fs; % 采样时间间隔
fa=30; % 正弦信号频率
fb=60;
fc=120;
fd=150;
t=0:Ts:10; % 时间
N=length(t);
df=fs/(N-1);
f=df*(0:N-1);
my1=1.8*sin(2*pi*fa*t)+3*sin(2*pi*fb*t)++2.1*sin(2*pi*fc*t)+2.4*sin(2*pi*fd*t); % 滤除fc前的理想波形
my2=1.8*sin(2*pi*fa*t)+3*sin(2*pi*fb*t); % 滤除fc后的波形
my=my1+randn(1,N); % 增加高斯白噪声后在滤除fc前的实际波形
⛄ 运行结果
⛄ 参考文献
[1] 周啸峰.元胞自动机的沙堆模型的Matlab模拟[J].智库时代, 2019.DOI:CNKI:SUN:ZKSD.0.2019-41-129.
[2] 徐欢,胡津津,袁媛.基于MATLAB的FIR数字滤波器的窗函数法设计与仿真[J].通化师范学院学报, 2013.DOI:CNKI:SUN:THSF.0.2013-04-010.