基于STSF的近场平面声全息仿真项目说明
项目介绍
本项目实现了一种基于空间声场变换(STSF)技术的近场平面声全息数值模拟系统。该系统通过理论建模模拟两个相互不相干的点声源在近场产生的声场,并利用全息测量面上的复声压数据进行声场反演。程序集成了空域到波数域的实时变换、反向传播算法以及数值正则化滤波器,旨在准确重建声源面的声压分布,实现声源定位与幅值评估。此仿真有助于研究测量参数(如距离、网格密度及信噪比)对声源识别精度和系统稳定性的影响。
---
功能特性
- 多声源声场模拟:支持在空间任意位置设置多个不相干点声源,模拟复杂的声场叠加效应。
- 波数域传播算法:利用二维快速傅里叶变换(2D-FFT)将声压信号转换至波数域,利用传播算子实现从测量面到重建面的精确投影。
- 正则化噪声抑制:内置改进的Tikhonov正则化滤波器,有效抑制反演传播过程中衰减波引起的高频噪声放大。
- 环境噪声抗干扰测试:提供信噪比(SNR)配置功能,模拟实际测试环境中的随机噪声干扰。
- 可视化与量化评估:自动生成声压级分布图、波数谱图及重建误差分布图,并输出声源定位的坐标估值。
---
使用方法
- 确保计算机已安装MATLAB R2016b或更高版本。
- 在MATLAB集成开发环境中打开主程序文件。
- 根据需要修改程序开头的环境参数(如频率、声源位置、全息面高度)。
- 运行脚本,程序将自动执行声场计算、变换、反演及绘图。
- 查看输出的四个子图以获取全息面分布、重建定位结果、波数谱及误差分析。
- 检查命令行窗口输出的声源定位坐标和平均相对误差等量化指标。
---
系统要求
- 软件环境:MATLAB R2016b 及以上版本。
- 硬件要求:建议 4GB 以上内存,以支持二维矩阵的高速傅里叶变换运算。
- 工具箱依赖:基础 MATLAB 即可运行,无需额外工具箱。
---
详细功能实现逻辑
程序遵循声学全息的标准处理流程,具体步骤如下:
1. 声场环境初始化
程序首先定义空气声速、密度和声源频率。建立一个正方形的二维扫描网格,定义网格步长和物理坐标范围。在此空间内设置两个具有不同位置和强度的不相干点声源,并确定全息测量面与目标重建面(通常为声源面)之间的垂直间距。
2. 测量数据仿真生成
利用点声源复声压公式,计算每个声源在全息测量面上产生的复声压。程序模拟了不相干声源的叠加过程,并引入复高斯白噪声以模拟真实的传感器采样环境。最终获得一个包含相位和幅值信息的全息面复声压矩阵。
3. 波数域空间变换
通过对全息面声压矩阵执行二维快速傅里叶变换(FFT2)和零频移位(fftshift),将空间域分布转换为波数域分布。同时根据采样定理计算对应的横向波数(kx)和纵向波数(ky)坐标轴。
4. STSF传播算子与正则化处理
在波数域中,通过计算轴向波数(kz)来确定声波的传播特性。
对于反向重建过程,计算相应的相位补偿算子。为防止反演带来的数值发散,程序应用了正则化滤波器。该滤波器根据正则化参数对高波数成分(对应远场衰减波)进行权重调节,确保在抑制噪声的同时尽可能保留声源细节。
5. 空间域声场重建
将正则化处理后的波数谱进行逆向位移(ifftshift)和逆傅里叶变换(IFFT2),将数据还原回空间域,得到目标重建面上的复声压分布。
6. 结果后处理与分析
程序计算重建面和全息面的声压级(SPL),基准声压设定为 2e-5 Pa。通过寻找重建面声压最大值的坐标实现声源定位。最后,将重建结果与基于点声源公式生成的理论参考面进行对比,计算全场的幅值相对误差。
---
关键算法与实现细节分析
- 点声源传播模型:程序使用了自由场下的声压公式,考虑了球面波的衰减和相位延迟,为仿真提供了准确的物理基础。
- kz 波数处理:在计算轴向波数时,通过处理复根,区分了行波(实数部分)和衰减波(虚数部分),这是 STSF 处理近场声学的核心。
- 改进的 Tikhonov 正则化:代码中实现的正则化滤波器利用算子模长的平方与正则化参数的比值来构造滤波窗口,能有效平衡重建分辨率与数值稳定性。
- 信噪比模拟:通过对复数噪声序列进行范数归一化,精确控制了注入信号的 dB 水平,保证了仿真对实验环境模拟的真实性。
- 坐标轴映射:在空域与波数域转换过程中,严格遵循离散序列与物理维度的对应关系,确保了声源定位结果的坐标精确度。