运动声源的到达结构仿真

运动声源的到达结构仿真@[toc]

概要

运动声源的到达结构仿真中,由于声传播速度远高于声源运动速度,而且声源辐射出声波后,介质的振子传递声波几乎不受声源影响,因此可以将根据每个时间帧的声源位置,使用bellhop计算到达结构,数字离散采样近似运动声源的到达结构。

整体架构流程

  1. 根据声源运动模型,得到声源在时间点 <math xmlns="http://www.w3.org/1998/Math/MathML"> t 0 , t 1 , t 2 . . . t_0, t_1, t_2 ... </math>t0,t1,t2...上的位置
  2. 根据声场互易理论,将接收器放在射线模型的Source位置,而声源放在Receiver上,即在.env的Rz和Rr,写声源位置序列
  3. 使用bellhop计算到达结构
  4. 画图

.env环境文件写法

下面展示一些 代码片

c 复制代码
'Munk profile'		! TITLE
100.0			! FREQ (Hz)
1			! NMEDIA
'NVW'			! SSPOPT (Analytic or C-linear interpolation)
0  0.0  5000.0		! DEPTH of bottom (m)
    0.0  1548.52  /
  200.0  1530.29  /
  250.0  1526.69  /
  400.0  1517.78  /
  600.0  1509.49  /
  800.0  1504.30  /
 1000.0  1501.38  /
 1200.0  1500.14  /
 1400.0  1500.12  /
 1600.0  1501.02  /
 1800.0  1502.57  /
 2000.0  1504.62  /
 2200.0  1507.02  /
 2400.0  1509.69  /
 2600.0  1512.55  /
 2800.0  1515.56  /
 3000.0  1518.67  /
 3200.0  1521.85  /
 3400.0  1525.10  /
 3600.0  1528.38  /
 3800.0  1531.70  /
 4000.0  1535.04  /
 4200.0  1538.39  /
 4400.0  1541.76  /
 4600.0  1545.14  /
 4800.0  1548.52  /
 5000.0  1551.91  /
'A' 0.0
 5000.0  1600.00 0.0 1.0 /
1				! NSD
1000.0 /			! SD(1:NSD) (m)
101				! NRD
1000.0 1000.0 /			! RD(1:NRD) (m)
101				! NR
10  20 /			! R(1:NR ) (km)
'AB  I'	  			! 'R/C/I/S' 注意这里第五个位置使用了I,即Irregular的网格布局,可以布放任意位置的Receivers列表
0			! NBeams
-85.0 85.0 /		        ! ALPHA1,2 (degrees)
0.0  5500.0 101.0		! STEP (m), ZBOX (m), RBOX (km)

代码

项目链接 运动声源到达结构仿真

matlab 复制代码
clc;
filename = 'MunkB_Arr_f';
bellhop(filename);
ARRFIL = [filename '.arr'];
% [ Arr, Pos ] = read_arrivals_bin( ARRFIL );
[ Arr, Pos ] = read_arrivals_asc( ARRFIL );


% plotarr
figure;
hold("on");
for isd = 1: size(Arr,1)
Arr1 = Arr( isd, 1 );
Narr = Arr1.Narr;

indexTNC0BNC0 = Arr1.NumTopBnc==0 &Arr1.NumBotBnc==0; % 直达
indexTNC1BNC0 = Arr1.NumTopBnc~=0 &Arr1.NumBotBnc==0; % 海面反射
indexTNC0BNC1 = Arr1.NumTopBnc==0 &Arr1.NumBotBnc~=0; % 海底反射
indexTNC1BNC1 = Arr1.NumTopBnc~=0 &Arr1.NumBotBnc~=0; % 海面、海底反射

stem(real( Arr1.delay( indexTNC1BNC1 ) ), abs( Arr1.A( indexTNC1BNC1 ) ) , 'k' )

stem(real( Arr1.delay( indexTNC0BNC1 ) ), abs( Arr1.A( indexTNC0BNC1 ) ) , 'b' )
stem(real( Arr1.delay( indexTNC1BNC0 ) ), abs( Arr1.A( indexTNC1BNC0 ) ) , 'g' )
stem(real( Arr1.delay( indexTNC0BNC0 ) ), abs( Arr1.A( indexTNC0BNC0 ) ) , 'r' )
% 以上的时延delay可以再加上声源运动到该点上所需要的时间,我这里只是示例,所以没加
pause(0.5);
end
hold("off")
xlabel('Time (s)' )
ylabel('Amplitude' )
% title([ 'Src_z=', num2str( Pos.s.z( 1 ) ), ...
%    ' m  Rcvr_z=', num2str( Pos.r.z( 1 ) ), ...
%    ' m  Rcvr_r=', num2str( Pos.r.r( 1 )/1e3 ), ' km' ] )

注意,上面画图中时延delay可以再加上声源运动到该点上所需要的时间,即根据声源当前的位置,得到当前帧对应的仿真时间。举例,如果声源速度10m/s,当前是循环为第二点,且距离第一个点100m,则delay需要加上 <math xmlns="http://www.w3.org/1998/Math/MathML"> 100 / 10 = 10 s 100/10=10s </math>100/10=10s。

小结

使用分帧的手段,对不同时间点运动声源的到达结构进行仿真,并画图,可视化运动声源的到达结构随时间的变化。

相关推荐
费曼学习法2 小时前
线段树:区间查询的"终极武器",一文看透高效范围统计
算法
wayz112 小时前
Day 2:线性回归原理与正则化
算法·机器学习·数据分析·回归·线性回归
QQ676580082 小时前
基于yolo26算法的水下目标检测图像数据集 海洋生物识别 海胆识别 海龟识别数据集 海洋生物监测与保护工作 潜水作业安全辅助系 水下环境感知第10408期
算法·目标检测·水下目标检测·海洋生物识别·海胆 海龟识别·海洋生物监测与保护工作·潜水作业安全辅助 水下环境感知
七颗糖很甜2 小时前
基于 OpenCV 的 FY2 云顶图云块追踪算法实现
人工智能·opencv·算法
__Wedream__2 小时前
NTIRE 2026 Challenge on Efficient Super-Resolution——冠军方案解读
人工智能·深度学习·算法·计算机视觉·超分辨率重建
FL16238631293 小时前
基于深度学习mediape实现人员跌倒人体姿势跌倒检测算法源码+说明文件
人工智能·深度学习·算法
wangwangmoon_light3 小时前
1.23 LeetCode总结(树)_一般树
算法·leetcode·职场和发展
被考核重击3 小时前
基础算法学习
学习·算法
小O的算法实验室3 小时前
2026年ASOC,学习驱动人工蜂群算法+移动机器人多目标路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进