基于频率抽样法的FIR高通滤波器去噪系统
项目简介
本项目是一套基于MATLAB开发的数字信号处理系统,专注于利用
频率抽样法(Frequency Sampling Method)设计线性相位FIR高通滤波器。系统的核心目标是去除混合信号中的低频干扰(如工频干扰、基线漂移),同时保留高频有效信号。程序实现了从滤波器系数设计、信号模拟、卷积滤波到结果可视化分析的全流程功能。
功能特性
- 自定义FIR滤波器设计:基于频率抽样理论,支持自定义采样频率、截止频率和滤波器阶数。
- 线性相位特性:强制引入线性相位约束,保证信号在滤波后的波形不发生相位失真。
- 吉布斯效应优化:在设计阶段通过设置过渡带优化值,改善滤波器的幅频特性,减少通带和阻带的波纹。
- 信号与噪声模拟:内置信号生成器,可模拟包含特定频率成分的有效信号以及复杂的低频背景噪声。
- 时域卷积滤波与校正:实现数字序列的卷积运算,并自动处理由线性相位引起的群延迟,实现输入输出信号的相位对齐。
- 多维度数据可视化:提供滤波器频响特性、时域波形对比及频谱分析的全方位图表展示。
技术实现细节
本系统的核心逻辑完全包含在主程序脚本中,具体实现流程如下:
1. 系统参数初始化
程序首先定义了系统的基础运行参数,包括采样频率(2000Hz)、滤波器阶数(101阶,取奇数以满足第一类线性相位条件)、高通截止频率(300Hz)以及信号的时间长度。
2. FIR滤波器设计(频率抽样法)
这是算法的核心部分,主要包含以下步骤:
- 构建理想幅频响应:根据滤波器阶数N,在0到2π范围内确定N个等间隔的频率抽样点。
- 通阻带设定:计算截止频率对应的索引位置,将高于截止频率的部分幅度设为1(通带),低于截止频率的部分设为0(阻带)。
- 过渡带优化:为了抑制吉布斯现象(Gibbs Phenomenon),在通带与阻带交界的截止频率处,程序显式地设置了一个过渡值(代码中取值为0.38)。这一处理使得理想矩形窗的边缘变得平滑,从而显著减小了时域截断带来的频域波纹。
- 对称性构建:利用实数序列傅里叶变换的共轭对称性,根据正频率部分的幅度响应构造负频率部分。
- 引入相位约束:为了获得第一类线性相位(偶对称冲击响应),计算并叠加了线性相位因子。相位斜率由滤波器阶数决定(alpha = (N-1)/2)。
- 获取时域系数:将设计好的复数频域响应数据进行快速傅里叶逆变换(IFFT),并取实部得到长度为N的时间序列系数 h[n]。
3. 信号模拟
程序构建了一个测试环境:
- 有效信号:由500Hz和800Hz的两个正弦波混合而成,位于高通滤波器的通带内。
- 噪声干扰:由50Hz工频干扰、100Hz谐波以及低频随机漂移噪声组成,主要集中在阻带内。
- 混合:将两者叠加生成待处理的含噪信号。
4. 滤波处理与对齐
- 卷积运算:利用设计好的滤波器系数 h[n] 对含噪信号进行卷积。
- 相位延迟补偿:由于使用了线性相位滤波器,输出信号会有一个固定的群延迟(Samples = (N-1)/2)。程序通过切片操作,将滤波后的信号向左平移相应的延迟量,并截取与原信号等长的部分,确保输入输出波形在时间轴上对齐。
关键算法与分析
频率抽样法的优势
相比于窗函数法,频率抽样法允许直接在频域对幅度响应进行控制。本代码通过在特定频率点(抽样点)直接赋值,能够非常直观地定义“高通”特性。
过渡带优化策略
代码中没有简单地使用理想的“0跳变到1”,而是在截止频率索引处插入了一个中间值
0.38。
- 作用:这种技术被称为过渡带采样值优化。如果不进行此处理,陡峭的频率响应会导致时域冲击响应极其缓慢地衰减,进而引起频域通带和阻带内的剧烈震荡。
- 效果:该优化值牺牲了极少量的过渡带宽度,换取了旁瓣电平的显著降低和平滑的通带响应。
线性相位对齐
代码通过
theta = -alpha * (2*pi*k) / N 引入了精确的线性相位,并在滤波后通过
sig_filtered(delay+1 : end) 进行了时域回溯。这对于波形分析至关重要,确保了滤波后的峰值位置与原始信号一致,便于通过肉眼观察去噪效果。
可视化展示
程序运行后会生成三个独立的图形窗口:
- FIR滤波器设计结果
*
幅频响应:绘制蓝色的实际插值频响曲线和红色的离散设计抽样点,显示出滤波器对低频的衰减和优化的过渡带。
*
相频响应:展示完全线性的相位特性。
- 时域信号分析
* 对比展示“原始纯净信号”、“含噪混合信号”和“滤波后信号”的局部波形。用户可以直观地看到叠加在平滑高频波形上的大幅度低频波动被成功滤除。
- 频谱分析对比
* 通过FFT计算并绘制信号处理前后的频谱。可以清晰地观察到,在滤波后的频谱中,50Hz和100Hz附近的噪声峰值被大幅抑制,而500Hz和800Hz的有效信号分量得以保留。
运行环境与要求
- 软件要求:MATLAB R2016a 及以上版本(代码仅使用基础数学函数和绘图函数,不依赖特定工具箱,但建议安装Signal Processing Toolbox以备扩展)。
- 硬件要求:标准PC配置即可,计算量极小。
使用说明
- 确保MATLAB当前工作目录包含程序文件。
- 直接运行主函数
main。 - 系统将自动完成滤波器设计、信号生成、滤波处理,并弹出三个图形窗口展示结果。
- 参数调整:用户可直接修改代码开头的“系统参数设置”部分(如修改
Fc 截止频率或 Fs 采样率)以观察不同参数下的滤波效果。