First commit after changed file framework
这个提交包含在:
可执行文件
+74
@@ -0,0 +1,74 @@
|
||||
import numpy as np
|
||||
|
||||
"""混响级计算"""
|
||||
def call_RLs_Ss(v,SL,freq,tau,theta,l,r): #海面混响
|
||||
"""
|
||||
v:风速,m/s
|
||||
SL:声源级,dB
|
||||
freq:声纳频率,KHz
|
||||
tau: 发射脉冲宽度,ms
|
||||
theta:海底掠射角,du
|
||||
l: 阵列长度,m
|
||||
r: 斜向距离,m"""
|
||||
freq = freq*1000
|
||||
beta=158*np.power((v*np.power(freq,1.0/3)),-0.58)
|
||||
Ss=3.3*beta*np.log10(theta/30)-42.4*np.log10(beta)+2.6#海面散射强度经验公式,Chapman,Harris.水声学原理,p237
|
||||
C=1500 #声速
|
||||
tau=tau/1000 #单位换算
|
||||
lam=C/freq#波长
|
||||
phi= np.power(10,np.log10(lam/2/l/np.pi)+0.92)#l>lambda水平线阵/边长>>lambda等效波束宽度,水声学原理p225
|
||||
TL=20*np.log10(r) #传播损失经验公式
|
||||
A = C*tau*phi*r/2 #海面散射面积
|
||||
rls = SL-2*TL+Ss+10*np.log10(A)
|
||||
return rls
|
||||
def call_RLs_Sb(SL,freq,tau,theta,l,r): #海底混响
|
||||
"""
|
||||
SL:声源级,dB
|
||||
freq:声纳频率,KHz
|
||||
tau: 发射脉冲宽度,ms
|
||||
theta:海底掠射角,du
|
||||
l: 阵列长度,m
|
||||
r: 斜向距离,m"""
|
||||
Sb=-28+10*np.log10(np.sin(theta)*np.sin(theta))#海底散射强度经验公式,Mackenzie.水声学原理,p243
|
||||
C=1500 #声速
|
||||
tau=tau/1000 #单位换算
|
||||
lam=C/(freq*1000)#波长
|
||||
phi= np.power(10,np.log10(lam/2/l/np.pi)+0.92)#l>lambda水平线阵/边长>>lambda等效波束宽度,水声学原理p225
|
||||
TL=20*np.log10(r) #传播损失经验公式
|
||||
A = C*tau*phi*r/2 #海底散射面积
|
||||
rls = SL-2*TL+Sb+10*np.log10(A)
|
||||
return rls
|
||||
|
||||
def call_RLs_Sv(SL,Sv,freq,tau,l,r): #海面混响
|
||||
"""
|
||||
SL:声源级,dB
|
||||
SV:散射强度,用户输入
|
||||
freq:声纳频率,KHz
|
||||
tau: 发射脉冲宽度,ms
|
||||
theta:海底掠射角,du
|
||||
l: 阵列长度,m
|
||||
r: 斜向距离,m"""
|
||||
freq = freq*1000
|
||||
C=1500 #声速
|
||||
tau=tau/1000 #单位换算
|
||||
lam=C/freq#波长
|
||||
phi= np.power(10,np.log10(lam/2/l/np.pi)+0.92)#l>lambda水平线阵/边长>>lambda等效波束宽度,水声学原理p225
|
||||
TL=20*np.log10(r) #传播损失经验公式
|
||||
A = C*tau*phi*r*r/2 #海面散射面积
|
||||
rls = SL-2*TL+Sv+10*np.log10(A)
|
||||
return rls
|
||||
|
||||
def call_rl(v,SL,Sv,freq,tau,theta,l,r):
|
||||
"""
|
||||
v:风速,m/s
|
||||
SL:声源级,dB
|
||||
SV:散射强度,用户输入
|
||||
freq:声纳频率,KHz
|
||||
tau: 发射脉冲宽度,ms
|
||||
theta:海底掠射角,du
|
||||
l: 阵列长度,m
|
||||
r: 斜向距离,m"""
|
||||
rlss = call_RLs_Ss(v,SL,freq,tau,theta,l,r)
|
||||
rlsb = call_RLs_Sb(SL,freq,tau,theta,l,r)
|
||||
rlsv = call_RLs_Sv(SL,Sv,freq,tau,l,r)
|
||||
return [rlss, rlsb, rlsv]
|
||||
在新工单中引用
屏蔽一个用户