news 2026/6/21 3:02:26

运动声源的到达结构仿真

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运动声源的到达结构仿真

概要

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

整体架构流程

  1. 根据声源运动模型,得到声源在时间点t0,t1,t2...t0​,t1​,t2​...上的位置
  2. 根据声场互易理论,将接收器放在射线模型的Source位置,而声源放在Receiver上,即在.env的Rz和Rr,写声源位置序列
  3. 使用bellhop计算到达结构
  4. 画图

.env环境文件写法

下面展示一些代码片

'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)

代码

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

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需要加上100/10=10s100/10=10s。

小结

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 3:00:04

企业官网设计那个最好?怎么才能融入品牌文化的视觉设计与前端落地

企业官网设计:如何通过视觉设计与前端技术深度融入品牌文化 企业官网设计不仅是信息窗口,更是品牌文化的立体化载体。优秀的官网设计需实现美学表达、用户体验与品牌内核的三维统一,本文将系统解析设计策略与落地路径。 推荐选择https://ww…

作者头像 李华
网站建设 2026/6/21 2:59:56

CSS如何保证移动端顶部Fixed头部的安全区域

iPhone X 系统中 fixed 头部被刘海遮挡,需用 top: env(safe-area-inset-top) 适配安全区域,并配合 viewport-fitcover 元标签及兼容写法 top: constant() 和 top: 0。iPhone X 系统里 position: fixed 头部被刘海/圆角遮挡这是 Safari 和 iOS WebKit 的老…

作者头像 李华
网站建设 2026/4/13 22:52:17

higress 这个中登才是AI时代的心头好栏

核心摘要:这篇文章能帮你 ?? 1. 彻底搞懂条件分支与循环的适用场景,告别选择困难。 ?? 2. 掌握遍历DOM集合修改属性的标准姿势与性能窍门。 ?? 3. 识别流程控制中的常见“坑”,并学会如何优雅地绕过去。 ?? 主要内容脉络 ?? 一、痛…

作者头像 李华
网站建设 2026/4/13 22:51:55

android 后台保活解析

在 Android 平台上实现后台保活越来越困难(尤其是 Android 8.0+ 和 12+),系统对后台运行限制非常严格。**没有 100% 保活的方法**,但可以通过多种手段提高存活率。以下是基于 Kotlin 的常见保活步骤(合法、非恶意场景)。 1. 添加必要权限(AndroidManifest.xml) ```xm…

作者头像 李华
网站建设 2026/4/13 22:51:54

大模型到底是啥?运维人分钟搞懂(不用数学)姓

1. 流图:数据的河流 如果把传统的堆叠面积图想象成一块块整齐堆叠的积木,那么流图就像一条蜿蜒流淌的河流,河道的宽窄变化自然流畅,波峰波谷过渡平滑。 它特别适合展示多个类别数据随时间的变化趋势,尤其是当你想强调整…

作者头像 李华
网站建设 2026/4/13 22:48:25

手把手教你用GPT-oss:20b:CSDN平台图文教程,小白也能快速部署

手把手教你用GPT-oss:20b:CSDN平台图文教程,小白也能快速部署 想体验接近GPT-4级别的智能对话,但又担心数据隐私、网络延迟或持续付费?今天,我将带你通过CSDN平台,在几分钟内免费部署一个完全开源、本地运…

作者头像 李华