- 由于同事最近出差,需要接手他的工作,所以趁机进修了一下他的bellhop。今天内容背景是,在实际海底模型基础上进行仿真。(当然,由于海底的数据比较敏感,真实海底数据不能提供,大家可以根据介绍自行创建海底文件)
- 导入海底数据
load long_bs
load lat_bs
load dep_bs
%注意这里的海底深度不是真实深度,由于真实深度文件敏感,这里为我自己设置的sinc函数
%%%%%%%%%海底参数画图%%%%%%%%%%%
figure
mesh(longitude,latitude,depth)
colormap(jet)
colorbar;
shading flat
如图,分别导入经度、纬度、深度三个数组,他们分别存储了经纬度信息和对应点的深度信息,使用mesh函数画成三维图像查看整个研究区域海底地形。
- 导入声速梯度
声速梯度存储在SSP.mat文件中,需要根据所需深度选择行数
load SSP
ssp=ssp(1:59,:);
%注意!!!!这里的59是对应的深度行,根据所选区域最深的深度以下确定声速梯度范围。
%例如,如果所选区域最大深度是5000m,打开SSP.mat文件,看到包含5000的在5200m,选到第62行才能完全包含海深
%%%%%%画声速梯度示意图%%%%%%
figure
plot(ssp(:,2),ssp(:,1));
set(gca,'YDir','reverse')%对Y方向反转
- env文件设置
如图可知,如果需要修改海底为不平整的海底,或者说自己设置的海底,需要准备.bty文件,该文件由插值类型,点数和所计算截面海底深度随距离变化的矩阵组成。
(1) 插值类型:参数“ 插值类型” 是一个字符,等于‘L’( 用于对表面进行线性插值)或‘C’(用于对表面进行曲线插值)。
(2) 点数:设置的深度点数。
(3) 海底深度随距离变化的矩阵:第一列为距离,距离单位为km;第二列为深度,深度单位为m。
- 运行结果
在选定点的0°,90°,180°,270°四个方向各选取40km计算传播损失,计算结果依次如图:
- 完整代码和数据文件:
完整代码和数据文件已经上传复杂海洋环境下不同角度使用Bellhop计算传播损失
其中包括,主程序mainfuction.m,运行它即可得到结果,其他的.m文件为所需要的函数,.mat文件为所需要的数据。bellhop.m和bellhop.exe为保证运行bellhop工具包的。
我将《Bellhop射线追踪程序概述(2008年6月发布).pdf》放入了资源中,大家可以自行查阅。