Синтетическая организация нескольких утверждений, связанных "или" - PullRequest
0 голосов
/ 15 декабря 2018

Я хочу сделать график, на котором я показываю несколько импульсов в разное время.У меня есть список 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 голосов
/ 15 декабря 2018

Я думаю, что вы можете использовать numpy indexong для эффективности и, конечно, написать цикл for для неизвестного числа операторов if.

p = np.zeros(1000)
for i in l:
    p[(0<=t-i) & (t-i<d)] = 1
0 голосов
/ 15 декабря 2018

Вы можете проверить несколько различных условий, используя цикл for.Например:

def pulse(t):
    L = 0
    for i in range(len(l)):
        if l[i] <= t < l[i] + d:
            L += 1
    return L
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...