综合组织由“或”连接的多个语句

时间:2018-12-15 00:17:16

标签: python numpy matplotlib

我想作一个绘图,在不同的时间显示几个脉冲。 我有清单l以及每个脉冲的时间,例如

l=[1.,2.,24.]

,我有脉冲的持续时间d,例如d=0.2。 我可以通过以下方式进行绘制:

import numpy as np
import matplotlib.pyplot as plt
t=np.linspace(0.,30,1000)
l=[1.,2.,24.]
d=0.2 
def pulse(t):
    if t<l[0]:
        L = 0.
    elif l[0]<=t<l[0]+d or l[1]<=t<l[1]+d or l[2]<=t<l[2]+d:
        L = 1
    else:
        L=0.
    return L

plt.figure(1)
P=map(pulse,t)    
plt.plot(t,P)
plt.show()

当然,如果len(l)很大,我将无法使用此过程,也就是说,我无法用手写方法写出很长的or链。如何以更综合的方式编写算法?

2 个答案:

答案 0 :(得分:2)

您可以使用for循环来测试几种不同的条件。例如:

def pulse(t):
    L = 0
    for i in range(len(l)):
        if l[i] <= t < l[i] + d:
            L += 1
    return L

答案 1 :(得分:1)

我认为您可以使用numpy indexong来提高效率,并且当然可以为未知数量的if语句编写一个for循环。

p = np.zeros(1000)
for i in l:
    p[(0<=t-i) & (t-i<d)] = 1