项目介绍
该项目是一个基于小波变换改进的LMS有源噪声控制(ANC)仿真系统。它旨在解决传统滤波器在处理具有强自相关性的宽带噪声时收敛速度慢和稳定性差的问题。通过引入小波分解技术,系统将复杂的时域信号映射到不同的频率子带上,利用小波变换的去相关性显著提升自适应滤波算法的性能。该仿真系统完整模拟了从声源产生、物理路径传播到误差反馈以及自适应调节的闭环过程,特别适用于对收敛性能有较高要求的有源降噪工程场景。
功能特性
- 混合噪声源模拟:支持产生包含宽带随机背景噪声和特定频率谐波成分(如150Hz和300Hz)的复合参考信号,模拟真实的工业或环境噪声。
- 物理路径建模:通过FIR滤波器精确模拟初级路径(声源到误差麦克风)和次级路径(受控扬声器到误差麦克风)的物理频率响应。
- 小波域去相关:利用手动实现的Haar小波滤波器组,将参考信号分解为不同尺度的子带分量,降低信号的自相关性。
- 子带FxLMS算法:在各个小波子带上独立运行自适应滤波器,并支持为不同子带配置差异化的步长因子,实现多速率/多分辨率控制逻辑。
- 实时性能评估:内置时域误差监测、均方误差(MSE)收敛曲线分析以及功率谱密度(PSD)对比功能,直观展示控制效果。
实现逻辑
系统的核心运行逻辑遵循以下步骤:
- 环境初始化:设置采样率为8000Hz,生成1秒时长的复合噪声信号。
- 路径仿真:
- 使用7阶FIR滤波器模拟初级路径P(z),生成期望信号。
- 使用5阶FIR滤波器模拟次级路径S(z),并初始化预估次级路径模型。
- 小波分解预处理:
- 采用Haar小波基函数。
- 针对参考信号进行两级离散小波分解,生成极低频(L2)、中频(H2)和高频(H1)三个独立的子带分量。
- 闭环控制循环:
- 在每一个采样瞬间,系统维护各个子带的状态缓冲区。
- 参考信号通过预估次级路径模型生成Filtered-X信号。
- 各子带滤波器权值向量分别与对应的子带信号进行卷积,累加后合成总控制输出。
- 模拟物理叠加过程,计入次级路径带来的延迟和增益,得到误差麦克风处的残余噪声。
- 根据FxLMS更新方程,利用残余误差信号分别更新各个子带的权值向量。
- 结果分析:计算降噪前后的信号功率比,以分贝(dB)为单位输出稳态降噪增益。
关键模块分析
- 算法核心:采用改进型子带FxLMS结构。与标准FxLMS不同,本系统在更新各子带权值时,使用了对应频段的Filtered-X信号。这种方式允许系统针对噪声能量分布不均的特点,在低频段追求稳定性,在高频段追求响应速度。
- 步长因子策略:系统为三个子带分配了递增的步长因子(0.01, 0.02, 0.04)。这种配置充分考虑了小波变换后的能量分布特性,有助于加快整体收敛过程。
- 小波分解函数:系统内部实现了手动小波分解模块,通过两级低通和高通滤波器串联实现。为了保证ANC系统的实时对齐,该实现采用了不带降采样的滤波器组结构,确保了子带信号与原信号在时间轴上的严格对应。
- 功率谱估计:系统包含一个基于周期图法的功率谱估计辅助函数,用于对比控前与控后信号在频域上的能量分布,帮助分析系统对谐波噪声和宽带噪声的抑制精度。
使用方法
- 配置环境:确保安装了MATLAB环境。
- 参数调整:根据需要修改源码开头的采样频率、仿真时长或次级路径滤波器系数。
- 运行仿真:直接在MATLAB命令行窗口运行主程序脚本。
- 结果查看:
- 观察第一个图表中的波形对比,确认残余误差是否随时间逐渐减小。
- 观察MSE收敛曲线,判断系统达到稳态所需的时间。
- 查看功率谱对比图,分析特定频率谐波(150Hz, 300Hz)的消除深度。
- 查看命令行输出的稳态降噪增益数值。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件要求:标准个人计算机,建议运行内存4GB以上。
- 依赖项:虽然核心算法采用手动实现以降低耦合,但结果可视化部分使用了MATLAB内置的信号处理绘图函数。