文件
AcousticSo/cs.py
T

87 行
3.4 KiB
Python

# -*- coding: utf-8 -*-
import warnings
warnings.filterwarnings('ignore')
import argparse, json
from common import NoIndent, MyEncoder
def _argparse():
parser = argparse.ArgumentParser(description='cs client')
parser.add_argument('-a', '--argfile', action='store', dest='argfile', required=True, help='name of arguments file')
return parser.parse_args()
def main():
parser = _argparse()
argfile = parser.argfile
if argfile[-5:] != '.json':
print('输入的参数文件名有误')
return
with open(argfile,'r') as jsonFile:
paramData = json.load(jsonFile)
if ("m" not in paramData) or ("d" not in paramData) or\
("f" not in paramData) or ("c" not in paramData) or\
("outParam" not in paramData):
print(f'{argfile}中的参数有误,请核实!')
return
m = int(paramData["m"])
d = float(paramData["d"])
f = float(paramData["f"])
c = float(paramData["c"])
outParam = paramData["outParam"]
from pyat.cscore import np, dis_mats, pn_funcs, ag_funcs
# 输出:
# 所有阵元的间距的集合
dis_m = dis_mats(m, d)
print('所有阵元的间距的集合:', dis_m)
# 相邻阵元的噪声相关性
pn_res = pn_funcs(f, c, dis_m)
print('相邻阵元的噪声相关性:pn=', pn_res[0, 1])
# 阵增益
ag_res = ag_funcs(m, pn_res)
print('阵增益:ag=', ag_res)
outData = {
"param": paramData,
"dis": np.round(dis_m,2).tolist(),
"pn": np.round(pn_res,2).tolist(),
"ag": np.round(ag_res,2).tolist()
}
with open(("" if outParam["outPath"]=="" else outParam["outPath"] + "/")+"csOut.json", 'w') as jsonFile:
json_data = json.dumps(outData, cls=MyEncoder, indent=2, ensure_ascii=False)
jsonFile.write(json_data)
# # write data to file
# # 保存地形数据
# bathym.r = np.around(bathym.r, decimals=0)
# bathym.d = np.around(bathym.d, decimals=0)
# bathymData = {
# "param": paramData,
# "count": len(bathym.d),
# "descript": "距离、深度",
# "data": NoIndent(list(zip(bathym.r, bathym.d)))
# }
# with open(("" if outParam["outPath"]=="" else outParam["outPath"] + "/")+"tlOut_bathym.json", 'w') as jsonFile:
# json_data = json.dumps(bathymData, cls=MyEncoder, indent=2, ensure_ascii=False)
# jsonFile.write(json_data)
# # 保存传播损失数据
# tlpoint = []
# depths = np.around(depths, decimals=0)
# ranges = np.around(ranges, decimals=0)
# TL = np.around(TL, decimals=2)
# tlpoint = list(zip(np.tile(depths.reshape(len(depths),1),len(ranges)).flatten(), np.tile(ranges,(len(depths),1)).flatten(), TL.flatten()))
# tlData = {
# "param": paramData,
# "count": len(ranges)*len(depths),
# "descript": "距离、深度、损失",
# "data": NoIndent(tlpoint)
# }
# with open(("" if outParam["outPath"]=="" else outParam["outPath"] + "/")+"tlOut_tl.json", 'w') as jsonFile:
# json_data = json.dumps(tlData, cls=MyEncoder, indent=2, ensure_ascii=False)
# jsonFile.write(json_data)
if __name__ == '__main__':
main()