使用BELLHOP软件生成声场信息

最近一段时间,对浅海的一些特性进行了学习,相应的需要BELLHOP软件作为辅助。说到BELLHOP,其实就是一种水声工具箱,可以进行水声计算,通过env文件调整环境参数,得到对应的声线信息、多途信息等。网上有BELLHOP的使用指南,另外BELLHOP工具包里自带的压缩包/at_wintel/doc文件夹中对env文件各参数做了详细介绍,在这里就不赘述了,只讲述一些经常需要修改的参数和生成信息,其他的参数在特定环境下需要用到再去查阅该参数的含义等。


  • BELLHOP使用前的准备

我在使用的时候,是在MATLAB中进行操作的,获取导出数据也比较方便(其实有界面那个我也没整明白),所以需要将bellhop的路径添加到matlab中,方便调用其中的库。

File——>Set Path——>Add with Subfolders——>将工具压缩包所在路径下的at_Wintel整个文件夹添加至路径。

  • env文件的配置

利用m脚本文件,运用matlab中的fprintf对.env文件进行参数配置。逐行是:

名称-频率-介质-插值类型-点数&海洋环境深度范围-声速剖面-声源个数-声源深度-接收个数-接收深度-水平向距离个数-水平向距离范围-运行类型-波束数-起止角度(发射)-步长和坐标轴范围。脚本程序如下。按照自身需要的环境设置好之后bellhop文件名即可,脚本中已经加了bellhop,直接运行即可(但是参数需要自己设置)。其中run_class为A时,生成的是多途信息,选择R时,可直接生成声线图。

fid=fopen([filename,'.env'],'wt+');%文件名
fprintf(fid,'%-30s\n','xxx'); %name
fprintf(fid,'%5.1f\n',f); % frequency
fprintf(fid,'%5g\n',1); % Nmedia
fprintf(fid,'%-s',interpret_type);%选择插值类型
fprintf(fid,'%s','V');%选择插值类型
fprintf(fid,'%s\n',att_type);%选择插值类型
fprintf(fid,'%5g %5g %5g\n',0,0.0,depth);% number of point, min_depth,max_depth
for ii=1:m
    fprintf(fid,'%7.1f %6g  %s\n',A(ii,1),A(ii,2),'/'); %SSP
end
fprintf(fid,'%-5s %5.1f\n','A*',0.0);%海底类型&粗糙度
fprintf(fid,'%-7.1f %-9.2f %-7.2f %-9.2f %-7.5f %-7.2f %s\n',depth,cpm2,ctm2,rho2,att_p,att_s,'/');%海底参数
fprintf(fid,'%-5g\n',1);%number of SD
fprintf(fid,'%-5g %s\n',depths,'/');%SD
fprintf(fid,'%-5g\n',1);%number of RD
fprintf(fid,'%-5g  %s\n',depthr,'/');%RD
fprintf(fid,'%-5g\n',Nrr);%number of R_distantce
fprintf(fid,'%f %f %s\n',start_distance,end_distance,'/');
fprintf(fid,'%s%s\n',run_class,beamtype);
fprintf(fid,'%-7g\n',Nbeams);%Nbeams
fprintf(fid,'%-5g %-5g %s\n',start_degree,end_degree,'/');%起止角度fprintf(fid,'%-4.1f %-6.1f% -5.1f%s\n',step,zbox,Rbox,'/' );%起止角度
fclose(fid);
bellhop(filename);
  • 多途信息的提取

有时候需要用到多途信息(例如我需要得到该环境下的信道冲激响应,并图形化)。那么以此为例,需要在.env文件中选择run_class=A.对得到的.arr文件进行信息提取。

首先对arr文件中的数据进行说明。例如下图中为我在300KHz发射频率,水下1m深的1个声源,50个接收点个数条件下生成的arr文件。从第五行开始,属于声线信息,L.5的77代表接收的声线数目最大值(即50个接收点接收的声线数目不同,从50个值里面选取数目最多的声线数目作为maxarr)。而对每个接收点,最开始(eg.L.6)代表该点接收的声线数目,之后从左到右(按列)依次是幅值、相位、时延、声源处掠射角、接收点处掠射角。(后面的0、1用于声线颜色控制,未用到)。

 300000.00000000000                1           1          50
   1.0000000    
   2.0000000    
   10.000000       11.836735       13.673470       15.510204       17.346939       19.183674       21.020409       22.857143       24.693876       26.530613       28.367346       30.204082       32.040817       33.877552       35.714287       37.551018       39.387756       41.224491       43.061222       44.897957       46.734695       48.571430       50.408161       52.244900       54.081635       55.918365       57.755100       59.591839       61.428574       63.265308       65.102043       66.938774       68.775513       70.612244       72.448975       74.285713       76.122444       77.959190       79.795921       81.632652       83.469391       85.306122       87.142853       88.979591       90.816330       92.653061       94.489799       96.326530       98.163261       100.00000    
          77
          19
  2.79809668E-04   180.00000      6.95161847E-03  -19.545454       19.545454               1           0
  3.91941797E-03   180.00000      6.95622666E-03  -18.636364       18.636364               1           0
  2.01009810E-02   180.00000      6.95908396E-03  -17.727272       17.727272               1           0
  3.78686860E-02   180.00000      6.96018944E-03  -16.818182       16.818182               1           0
  2.62399763E-02   180.00000      6.95954263E-03  -15.909091       15.909091               1           0
  6.68257987E-03   180.00000      6.95714355E-03  -15.000000       15.000000               1           0
  6.23768254E-04   180.00000      6.95299311E-03  -14.090909       14.090909               1           0
  2.12382893E-05   180.00000      6.94709271E-03  -13.181818       13.181818               1           0
  3.06984839E-05   0.0000000      6.68786000E-03   2.2727273       2.2727273               0           0
  8.26534757E-04   0.0000000      6.69339253E-03   3.1818182       3.1818182               0           0
  8.12163390E-03   0.0000000      6.69724029E-03   4.0909090       4.0909090               0           0
  2.92595606E-02   0.0000000      6.69940189E-03   5.0000000       5.0000000               0           0
  3.87486890E-02   0.0000000      6.69987686E-03   5.9090910       5.9090910               0           0
  1.88737158E-02   0.0000000      6.69866521E-03   6.8181820       6.8181820               0           0
  3.37629160E-03   0.0000000      6.69576740E-03   7.7272725       7.7272725               0           0
  2.21053531E-04   0.0000000      6.69118389E-03   8.6363640       8.6363640               0           0
  1.86470188E-05  0.77806765      1.04337493E-02   43.181820      -52.329662               0           1
  3.51262075E-04  0.75650609      1.04414858E-02   44.090908      -53.238750               0           1
  2.41991039E-03  0.73622096      1.04465941E-02   45.000000      -54.147842               0           1

读取后的数据输入的是arr文件,输出分别是水平向距离点、幅值、时延、声源处声线掠射角。如下:

[R,Newamp,Newdelay,NewRcvrAngle] = readnchoose(filename);

按时间顺序,即时延顺序排序后,按序做运算生成冲激响应函数。

%单点冲激响应h(tao)=ΣA*δ(tao-taoi)
for i=1:length(R)
    for k=1:size(NewRcvrAngle_new,2)
        for m=1:size(NewRcvrAngle_new,2)
           h(i,(k-1)*m+m)
           =Newamp_new(i,k)*exp(j*NewRcvrAngle_new(i,k)*pi/180)
            *Newamp_new(i,m)*exp(j*NewSrcAngle_new(i,m)*pi/180);
        end
    end
end
%散射特性
for i=1:N
        p1(i,:)=ain(i)*h_point_nonzero_merge(1,:)*exp(j*fai(i));
        p_sum=p_sum+p1(i,:);
end

图片传不上去,本来有个画好的冲激响应图,大家自行看包络吧,符合高斯分布。

你可能感兴趣的:(海洋环境)