32 行
675 B
Python
32 行
675 B
Python
import numpy as np
|
|
|
|
|
|
# 函数
|
|
def dis_mats(m, d): # 以线阵为例
|
|
dis = np.zeros((m, m))
|
|
for i in range(m):
|
|
D = np.arange(0, m * d, d) - d * int(i) * np.ones(m)
|
|
dis[i] = D
|
|
dis = np.triu(dis)
|
|
dis += dis.T - np.diag(dis.diagonal())
|
|
|
|
return dis # 所有阵元的间距的集合
|
|
|
|
|
|
def pn_funcs(f, c, dis): # 所有阵元的噪声相关性
|
|
k = 2 * np.pi * f / c
|
|
# pn = np.sinc(k * dis)
|
|
a = np.sin(k * dis)
|
|
b = k * dis
|
|
|
|
pn = np.divide(a, b, np.ones_like(a), where=b != 0) # sin0/0=1
|
|
|
|
return pn
|
|
|
|
|
|
def ag_funcs(m, pn):
|
|
ps = np.power(m, 2)
|
|
ag_s = ps / np.sum(pn) #
|
|
ag = 10 * np.log10(ag_s)
|
|
|
|
return ag |