我有以下代码:
m1 = sig*np.random.randn(N)+mu
m2 = sig*np.random.randn(N)+mu
dl = np.random.uniform(low=0,high=600*Mp,size=N)
Mchirp = (m1+m2)*(m1*m2/(m1+m2)**2)**(3/5)
def SNR2(Mchirp,dl):
A = -(Mp/dl)*2*np.sqrt(5/(24*np.pi))*(G*Ms/(c**2*dl*Mp))*(G*np.pi*Ms/(c**3))**(-1/6)*(Mchirp/Ms)**(-5/6)
return A**2*integrate.quad(lambda f: f**(-2.3333)/S(f), 20, 1500, limit=1000)[0]
trigs = np.empty(N)
print trigs.shape
def trig_decision(SNR2):
for i in range(len(SNR2(Mchirp,dl))):
if SNR2(Mchirp,dl)[i] > SNRth:
trigs[i] = 1
else:
trigs[i] = 0
return trigs
trig_decision(SNR2)
我只希望它从我的函数SNR2中获取52500个值的列表,并检查它们是否大于给定的阈值。当我只运行SNR2(Mchirp,dl)时,运行大约需要3秒钟。但当我运行trig\u decision函数时,它会花费很长时间。发生这种情况的原因和解决方法是什么?你知道吗
每次循环时,您都会再次运行
SNR2()
。别那么做!无论如何,最好使用enumerate
:似乎也不应该有一个全球性的:
相关问题 更多 >
编程相关推荐