强噪声背景下音频周期信号提取与多维特性分析系统
项目简介
本项目实现了一套基于MATLAB的信号处理系统,专门用于在极低信噪比(SNR = -10dB)的模拟强噪声环境下,提取特定的音频周期信号(正弦波)。系统集成了信号生成、数字滤波、统计学特性计算、频域分析以及互相关检测等功能。通过高阶FIR带通滤波器有效地将目标信号从高斯白噪声中分离,并提供详细的统计数据和多维度的可视化分析报告,以验证算法的去噪性能和信号完整性。
功能特性
- 模拟环境构建:生成包含目标单频信号与高强度高斯白噪声的混合信号源,能够模拟SNR为-10dB的恶劣噪声环境。
- 数字信号提取:设计高阶FIR带通滤波器,实现针对特定频率(1000Hz)的窄带信号提取。
- 统计特性分析:计算并对比处理前后信号的均值、方差及平均功率(均方值),量化评估去噪效果。
- 频域深度分析:
* 利用FFT分析信号的幅度谱,展示噪声底噪与信号峰值的对比。
* 利用Welch法估计功率谱密度(PSD),精确展示信号能量在频域的分布。
- 互相关与延迟检测:计算提取信号与原始纯净信号的互相关函数,评估波形相似度并自动计算滤波带来的相位/时间延迟。
- 全方位可视化:在单一图表中展示时域波形、频域幅度谱、功率谱密度及互相关曲线。
系统要求
- MATLAB R2016b 或更高版本
- Signal Processing Toolbox(信号处理工具箱)— 用于
fir1, pwelch, xcorr 等函数。
使用方法
- 确保MATLAB路径中包含本项目的脚本文件。
- 在MATLAB命令行窗口中输入
main 并回车即可运行。 - 系统将自动清理工作区,执行分析流程,在命令行输出统计报告,并弹出一个综合图形窗口。
算法实现细节与逻辑
本项目的核心逻辑在 main.m 中实现,具体处理流程如下:
1. 参数设置与模拟信号生成
- 基础参数:设定采样率(fs)为 44100 Hz,信号时长为2秒。
- 目标信号:生成频率为 1000 Hz、幅度为1.0的标准正弦波,模拟音频周期信号。
- 强噪声生成:根据设定的信噪比 SNR = -10 dB 计算噪声功率,生成相应幅度的高斯白噪声,并与目标信号叠加形成混合信号。在此环境下,噪声功率远大于信号功率。
2. 信号提取(FIR滤波设计)
- 滤波器设计:采用 FIR带通滤波器,阶数设定为 500阶 以获得陡峭的截止特性。
- 参数设定:中心频率对准1000 Hz,通带带宽为100 Hz(即950Hz - 1050Hz)。
- 实现方法:使用
fir1 函数结合Hamming窗设计滤波器系数。使用 filter 函数进行前向滤波。
* *注意*:代码特意使用单向
filter 而非零相位
filtfilt,目的是保留并观察因果系统的相位延迟特性。
3. 多维统计特性分析
系统分别对“混合信号”和“提取信号”进行以下统计计算:
- 瞬态处理:在计算提取信号的统计量时,自动截去了前
filter_order 个样本点,剔除滤波器初始化产生的瞬态响应,确保统计数据的准确性。 - 统计指标:
*
均值 (Mean):评估信号的直流分量。
*
方差 (Variance):评估信号的波动程度(交流功率)。
*
平均功率 (Average Power):基于样本平方和的均值计算,用于衡量去噪前后能量的变化,并与纯净信号功率进行对比。
4. 频域分析
- FFT频谱:对信号进行快速傅里叶变换,计算单边幅度谱。为了便于观察大动态范围的噪声,绘图采用了对数坐标(Log Scale)。
- PSD功率谱密度:采用 Welch方法 (
pwelch),使用4096点的长窗口,计算信号在单位频率上的功率分布(dB/Hz),能更平滑、准确地估计随机信号的频谱特征。
5. 互相关与延迟分析
- 使用
xcorr 函数计算提取信号与原始目标信号的互相关系数(归一化)。 - 相似度评估:通过寻找互相关函数的峰值(最大相关系数),评估提取信号恢复波形的程度。
- 延迟计算:自动定位峰值所在的滞后点数(Lag),将其转换为时间延迟(毫秒),并与理论上的FIR滤波器群延迟(Filter Order / 2)进行对比验证。
输出结果说明
命令行输出
运行程序后,命令行不仅会显示当前设定的SNR和目标频率,还会详细列出混合信号与提取信号的均值、方差和功率数据,以及互相关分析得出的最大相关系数和实际测量到的信号滞后时间。
图形化报告
程序生成的图形窗口包含四个子图:
- 时域波形对比 (局部):截取中间段波形,直观展示原始信号、强噪信号与被淹没后提取出的信号波形(含相位偏移)。
- 频域幅度谱 (FFT):聚焦于目标频率附近,展示窄带滤波对周围噪声的抑制效果。
- 功率谱密度 (PSD):展示全频段(0-5000Hz)的能量分布,体现低频和高频噪声的滤除情况。
- 互相关函数:显示相关峰值的位置,直观反映滤波系统的时间延迟特性。