First commit after changed file framework

这个提交包含在:
2023-03-14 18:52:04 +08:00
父节点 e23318c8f1
当前提交 79a6a31dc7
共修改 34 个文件,包含 5751 行新增和 0 行删除
可执行文件
+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]