声波传播速度是海洋中最重要的声学参数,它是影响声波在海洋中传播的最基本的物理量参数。有关测量研究表明,水中声速是温度、盐度和静压力的函数,声速随着温度、盐度和压力的增加而增加。海洋的不均匀性和多变性强烈地影响着海洋中的声传播,海水中的声速变化也体现出随着空间和时间变化的复杂性。
多波束测深的本质是测量不同方向上声波传播的时间,利用声波在水中的传播速度,进而计算声波在水中传播的水平距离和深度。在多波束测深声呐一次测量过程中,一个覆盖扇面内存在多个波束对于非垂直入射的波束,即使其入射角度不变,在不同声速环境下的传播轨迹将完全不同。因此水中声速分布情况将对多波束测深结果产生根本的影响,准确获取水中的声速是多波束测量的基础。
声速对多波束测深结果的影响过程是一个综合的复杂过程,主要体现在两个方面一是表层声速对测深结果的影响二是声速剖面对测深结果的影响,且二者是相互影响的。因此,在多波束测深声呐中,即使准确测量了波束方向和传播时间,如果不能根据实际声速分布结构计算测深结果,也将带来较大的测深误差,使测量结果偏离真实地形,从而带来测深假象。由声速引起的测深假象不给予正确的消除,将使测量结果不可用。

一般而言,声速在水平方向上的变化较小,因此可以假设声速只随着深度的变化而变化,而在水平面方向上不变即声速c为深度z的函数c(z),称之为海水中声速的垂直分层模型。声速的垂直分层模型是对实际海洋中声速结构的一种近似理想模型,是解决除远程声速传播问题的基本假设。在分层介质模型中,声速沿垂直深度的分布称为声速剖面,声速剖面一般比较复杂且随着海水介质改变。
————————————————

Matlab仿真分析
下面给出的是基于分层常梯度模型的声线追踪:
function [cos_alfa1,t1, x1, z1] = Sound_Ray_Tracing_core(cos_alfa0,c0,c1,z,t,over_flag)
% **************** 基于射线声学的恒定声速梯度的声线追踪计算核心 *********************
% **************** 输入参数
% *** cos_alfa0 入射掠射角余弦
% *** c0 入射声速(超出时为上一层的入射声速)
% *** c1 射出声速(超出时为上一层的射出声速)
% *** z 层厚(超出时为上一层的厚度)
% *** t 总传播时间
% *** over_flag 表示数据超出声速剖面给出的范围
% **************** 输出参数
% *** cos_alfa1 射出掠射角余弦
% *** t1 实际的传播时间增量
% *** x1 实际的水平传播距离增量
% *** z1 实际的垂直传播距离增量
% *********** 最后更新 20180611
% *** 更新内容:首次编写

%%

if over_flag == 0 %表示没有超出给定的范围
a = (c1 - c0)/z/c0; %求声速梯度 注意正负号区分
if a ~= 0 %声速梯度不等于0的时候
alfa0 = acos(cos_alfa0); %求入射掠射角
cos_alfa1 = cos_alfa0/c0c1; %求射出掠射角余弦
alfa1 = acos(cos_alfa1); %求射出掠射角
sin_alfa0 = sin(alfa0); %求入射掠射角正弦
sin_alfa1 = sin(alfa1); %求出射掠射角正弦
x_max = z/tan((alfa0+alfa1)/2); %求声线最大可能的水平距离增量
t_max = (log((1+sin_alfa0)/(1-sin_alfa0)) - log((1+sin_alfa1)/(1-sin_alfa1)))/(2
ac0); %求最大可能的传播时间增量
t_max = abs(t_max); %保证为正数
if t_max > t %说明声线到达终点了
t1 = t; %返回实际的时间增量
A = log((1+sin_alfa0)/(1-sin_alfa0)) - 2
ac0t;
sin_alfa2 = (exp(A) - 1)/(exp(A) + 1); %重新求到达掠射角正弦
alfa2 = asin(sin_alfa2); %求实际的到达掠射角
cos_alfa2 = cos(alfa2); %重新求到达掠射角余弦
cos_alfa1 = cos_alfa2;
c2 = cos_alfa2/cos_alfa0c0; %求实际到达点的声速
z1 = (c2/c0 - 1)/a; %求实际达到点的深度增量
x1 = z1/tan((alfa0+alfa2)/2); %求实际达到点的水平距离增量
else %声线还没有到达终点
t1 = t_max; %返回实际的时间增量
x1 = x_max; %返回实际的水平距离增量
z1 = z; %返回实际的深度增量
end
else %声速梯度等于0的时候 为常声速层
cos_alfa1 = cos_alfa0;
alfa0 = acos(cos_alfa0); %求入射掠射角
sin_alfa0 = sin(alfa0); %求入射掠射角正弦
t1 = z/sin_alfa0/c0; %返回实际的时间增量
x1 = z/sin_alfa0
cos_alfa0; %返回实际的水平距离增量
z1 = z; %返回实际的深度增量
end
else
a = (c1 - c0)/z/c0; %求声速梯度 注意正负号区分
alfa0 = acos(cos_alfa0); %求入射掠射角
sin_alfa0 = sin(alfa0); %求入射掠射角正弦
t1 = t; %返回实际的时间增量
A = log((1+sin_alfa0)/(1-sin_alfa0)) - 2ac0t;
sin_alfa2 = (exp(A) - 1)/(exp(A) + 1); %重新求到达掠射角正弦
alfa2 = asin(sin_alfa2); %求实际的到达掠射角
cos_alfa2 = cos(alfa2); %重新求到达掠射角余弦
cos_alfa1 = cos_alfa2;
c2 = cos_alfa2/cos_alfa0
c0; %求实际到达点的声速
z1 = (c2/c0 - 1)/a; %求实际达到点的深度增量
x1 = z1/tan((alfa0+alfa2)/2); %求实际达到点的水平距离增量
end
function [xx,zz,tracing_time] = Sound_Ray_Tracing(field_angle, Echo_time, z_s, Sound_velocity_profile)
% **************** 基于射线声学的恒定声速梯度的声线追踪计算 *********************
% ********* 输入参数
% ****** field_angle 波束角
% ****** Echo_time 回波总时间
% ****** z_s 开始追踪的深度
% ****** Sound_velocity_profile 声速剖面
% ********* 输出参数
% ****** xx 水平距离累计
% ****** zz 深度累计
% ****** tracing_time 各段总时间累计

data_points = size(Sound_velocity_profile,1); %得到声速剖面的数据点数

%%

Grazing_angle0 = pi/2 - abs(field_angle); %初始化掠射角

for k = 1:data_points
if Sound_velocity_profile(k,1) > z_s %当分层深度首次大于z_s时
break;
end
end

if k == 1 %如果初始深度小于声速剖面的最小值 向上外推声速剖面值
x0 = Sound_velocity_profile(1,1);
x1 = Sound_velocity_profile(2,1);
y0 = Sound_velocity_profile(1,2);
y1 = Sound_velocity_profile(2,2);
c_temp = y0 - (y1 - y0)/(x1 - x0)(x0 - z_s);
depth = [z_s; Sound_velocity_profile(:,1)]; %初始化深度
Sound_velocity = [c_temp; Sound_velocity_profile(:,2)]; %初始化声速
else
x0 = Sound_velocity_profile(k-1,1);
x1 = Sound_velocity_profile(k,1);
y0 = Sound_velocity_profile(k-1,2);
y1 = Sound_velocity_profile(k,2);
c_temp = y1 - (y1 - y0)/(x1 - x0)
(x1 - z_s);
depth = [z_s; Sound_velocity_profile(k:end,1)]; %初始化深度
Sound_velocity = [c_temp; Sound_velocity_profile(k:end,2)]; %初始化声速
end

data_points1 = length(depth);

for i = 1:data_points1 - 1
if i == 1 %第一层
cos_alfa0 = cos(Grazing_angle0); %初始化入射掠射角余弦
c0 = Sound_velocity(i); %初始化当前层入射处的声速
c1 = Sound_velocity(i+1); %初始化当前层射出处的声速
z = depth(i+1) - depth(i); %初始化当前层厚度
t = Echo_time/2; %初始化总时间
[cos_alfa1,t1, x1, z1] = Sound_Ray_Tracing_core(cos_alfa0,c0,c1,z,t,0);
tracing_time(i) = t12; %得到该层总传播时间
xx(i) = x1; %得到累计水平距离
zz(i) = z_s + z1; %得到累计深度距离
else
cos_alfa0 = cos_alfa1;
c0 = Sound_velocity(i); %初始化当前层入射处的声速
c1 = Sound_velocity(i+1); %初始化当前层射出处的声速
z = depth(i+1) - depth(i); %初始化当前层厚度
t = Echo_time/2 - tracing_time(i-1)/2; %初始化剩余总时间
[cos_alfa1,t1, x1, z1] = Sound_Ray_Tracing_core(cos_alfa0,c0,c1,z,t,0);
tracing_time(i) = tracing_time(i-1) + t1
2; %得到截止到目前层的总传播时间
xx(i) = xx(i-1) + x1; %得到累计水平距离
zz(i) = zz(i-1) + z1; %得到累计深度距离
end
if tracing_time(i) >= Echo_time %如果追踪总时间大于等于需要追踪的总时间 则跳出循环
break;
end
end

if tracing_time(i) < Echo_time %还没有到达最终的追踪时间
i = data_points;
cos_alfa0 = cos_alfa1;
c0 = Sound_velocity(i-1); %初始化当前层入射处的声速
c1 = Sound_velocity(i);
z = depth(i) - depth(i-1); %初始化当前层厚度
t = Echo_time/2 - tracing_time(i-1)/2; %初始化剩余总时间
[cos_alfa1,t1, x1, z1] = Sound_Ray_Tracing_core(cos_alfa0,c0,c1,z,t,1);
tracing_time(i) = tracing_time(i-1) + t1*2; %得到截止到目前层的总传播时间
xx(i) = xx(i) + x1; %得到累计水平距离
zz(i) = zz(i) + z1; %得到累计深度距离
end

tracing_time = [0, tracing_time];
xx = [0,xx];
zz = [z_s ,zz];

if field_angle < 0
xx = - xx; %水平累计坐标为负值
end
clc;
close all;
clear all;
%%

data_points = 50;
depth_down = (1:data_points)/data_points100;
depth_down = depth_down’;
Sound_velocity_down = 1480 - 1
depth_down;

Sound_velocity_profile = [depth_down,Sound_velocity_down]; %获取声速剖面

figure;
plot(depth_down, Sound_velocity_down,’*-’);
grid on;
xlabel(‘深度m’);
ylabel(‘声速m/s’);
title(‘深度VS声速’);

%%
c = Sound_velocity_down(1); %表面声速
field_angle = 85/180pi; %初始入射角
Echo_time = 2
30/cos(field_angle)/c; %需要追踪的总时间
z_s = 0.7; %开始追踪的深度


[xx,zz,tracing_time] = Sound_Ray_Tracing(field_angle, Echo_time, z_s, Sound_velocity_profile);
[horizontal_dis,depth,time_total,total_dis] = acustic_speed_fix(field_angle, Echo_time, z_s, Sound_velocity_profile);

depth1 = tracing_timec/2cos(field_angle) + z_s;
horizontal_dis1 = tracing_timec/2sin(field_angle);
figure;
plot(horizontal_dis1,-depth1,’*-’);
hold on;
grid on;
plot(xx,-zz,'r-’);
legend(‘按表面恒定声速计算的声线’,‘按水平分层恒定声速梯度模型计算的追踪声线’);
xlabel(‘水平距离m’);
ylabel(‘深度m’);
string = [‘初始入射角’,num2str(field_angle/pi
180),‘°’];
title(string);

水下声呐定位声线跟踪算法相关推荐

  1. 浅谈水下声速剖面及声线追踪算法

    声波传播速度是海洋中最重要的声学参数,它是影响声波在海洋中传播的最基本的物理量参数.有关测量研究表明,水中声速是温度.盐度和静压力的函数,声速随着温度.盐度和压力的增加而增加.海洋的不均匀性和多变性强 ...

  2. 雷达、定位、跟踪等信号处理邻域SCI期刊整理及推荐

    雷达邻域SCI期刊整理及推荐:题名.刊物信息.撰写特点.审稿周期及投稿难度总结 定位/跟踪邻域SCI期刊整理及推荐:题名.刊物信息.撰写特点.审稿周期及投稿难度总结 估计/滤波/融合等信号处理邻域SC ...

  3. 第十五个“世界海洋日”:水声功率放大器能为海洋水下声呐研究做些什么?

    2023年6月8日,第十五个"世界海洋日"到来,今年的海洋日我们除了要聚焦海洋生态保护和海洋资源的可持续发展及利用,我们同样把视线聚焦在海洋科学研究上,海洋水下声呐技术,就是我们本 ...

  4. 大疆车载招聘|SLAM、地图定位、感知算法、机器学习算法工程师

    3D视觉工坊致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁.如果你需要我们帮助你发布实习或全职岗位,请添加微信号「CV_LAB」. 公司介绍 大疆车载是大疆旗下专门 ...

  5. MO-LTR:基于单目RGB视频的多目标定位、跟踪与重建

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:MO-LTR: Multiple Object Localization, Tracking a ...

  6. cmt跟踪算法 matlab_“水上大疆”招聘——雷达算法工程师

    企业情况 企业做无人船艇,坐落于深圳and珠海,拥有世界一流的无人船艇研发及产业化团队,无人船艇自主航行.智能壁障.协同控制等核心技术处于全球领先水平.产品应用于:环境测量.海洋调查.军用.无人航运等 ...

  7. 目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军)

    目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军) 文章链接:https ...

  8. 视频目标跟踪算法综述

    视频跟踪:基于对比度分析的目标跟踪.基于匹配的目标跟踪和基于运动检测的目标跟踪       基于对比度分析的目标跟踪:主要利用目标和背景的对比度差异实现目标的检测与跟踪.这类算法按照跟踪参考点的不同可 ...

  9. 比微软kinect更强的视频跟踪算法--TLD跟踪算法介绍

    TLD (Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生在其攻读博士学位期间提出的一种新的单目标长时间( long term tracking )跟踪算法.该 ...

最新文章

  1. Android 模仿微信启动动画
  2. 【转】关于arcgis server ADF的几种超时
  3. oracle 11g ocp 笔记(15)--使用rman进行备份
  4. 云桌面 瘦终端_小米盒子连接Citrix云桌面
  5. Linux 实操———CentOS 6 安装配置 Tomcat
  6. java中sam接口_具有非SAM接口的lambda的Java习惯用法
  7. VC++下使用ADO编写数据库程序(关键文章)
  8. 对称加密算法之Java SM4算法应用 附可用工具类
  9. 信用报告OCR服务 助力授信审核快人一步
  10. ISO/IEC 27701:2019(隐私信息安全管理扩展要求和指南)解读(二)
  11. C语言全局变量和数组的应用
  12. ajax传参中文乱码问题解决
  13. 学习python的第二周 第一天
  14. 新书来了 | 邀您一起来看看
  15. 【开源】我和 JAP(JA Plus) 的故事
  16. 【自考】——考后总结
  17. 语音转文字转换器市场现状研究分析-
  18. DPlayer播放m3u8
  19. BZOJ 4864: [BeiJing 2017 Wc]神秘物质
  20. 自定义报表-FineReport JS实现隐藏Tab页

热门文章

  1. Amoi夏新数码移动音响G5
  2. 将byte[] 转换成图片
  3. element-plus的el-icon和@element-plus/icons vue3 组件封装与使用
  4. 文件标识位的区别r、r+、w、w+等
  5. Python爬虫实战:爬取股票信息
  6. 提取邮件内容 html,整个Html内容以邮件的方式发送出去(取出标签包含的用户输入信息)...
  7. 分享自己写的一个找CALL练习软件
  8. E.A. Guillemin 吉耶曼统一古典电路理论的人
  9. 达人评测 雷神911mr怎么样
  10. 鞍山市电子计算机学校,鞍山市信息工程学校