[PYTHON] Tiefpassfilter mit Verschluss

Einführung

Ich dachte, wenn ich eine Variable einfügen würde, um den Verlauf global zu halten, würde sich der Bereich erweitern und ich würde ihn nicht mögen, aber wenn ich einen Abschluss verwende, kann ich ihn ausblenden. Dies ist mein eigenes Memo.

Code

import numpy as np

def get_lpf(alpha):
    prev = np.nan * np.ones(1)
    calc = lambda pre, new : alpha * prev + (1.-alpha) * new

    def lpf(val):
        prev[0] = calc(prev[0], val) if not np.isnan(prev[0]) else val
        return prev[0]

    return lpf

lpf = get_lpf(0.8)

for i in range(100):
    new = numpy.random.normal()
    filtered = lpf(new)
    
    print("new=%f, filt=%f" % (new, filtered) )

Kommentar

prev = np.nan * np.ones(1)
calc = lambda pre, new : alpha * prev + (1.-alpha) * new

--Erstellen Sie eine Verlaufsvariable prev in der lpf-Generierungsfunktion get_lpf --calc ist eine Funktion, die die LPF-Berechnung $ y_n = \ alpha y_ {n-1} + (1- \ alpha) x_n $ ausführt

prev[0] = calc(prev[0], val) if not np.isnan(prev[0]) else val

Recommended Posts

Tiefpassfilter mit Verschluss
Medianfilter mit Röntgenstrahl (Medianfilter)
Schließung
Schreiben Sie FizzBuzz mit map (), redu (), filter (), rekursiv