Järgneval graafikul kujutatud signaal on alguses tükk aega stabiilne (mõõteriista täpsuse piires) ja sündmuse toimumise hetkel muutub järsult. Seejuures muutuse märk ei ole üldiselt oluline.

Seega tuleb otsida üles ajahetk, kus järgmise punkti signaali muut absoluutväärtuse poolest ületab teatud läve:

def tuvasta_sündmus(x, y, lävi):
    for i in range(len(y) - 1):
        if abs(y[i + 1] - y[i]) > lävi:
            return x[i]

Järgmise näite korral on sündmuse indikaatoriks signaali suurim (ja positiivne) muutus.

Jällegi tuleb arvutada iga kahe järjestikuse punkti signaalide vahe (mis on sisuliselt tuletis). Antud signaali korral oleks tulemus järgmine:

Jääb vaid üles otsida maksimaalse elemendi indeks saadud massiivis.

Seda algoritmi on mugavam realiseerida NumPy abiga:

def tuvasta_sündmus(x, y):
    muut = y[1:] - y[:-1]
    i = np.argmax(muut)
    return x[i]

Esmalt arvutatakse tuletis vektoriseeritud kujul. Seejärel funktsioon numpy.argmax otsib saadud massiivist suurima elemendi ja tagastab selle indeksi.

Vaata lisaks

Sisukord