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.
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) )
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
prev =
setzen, wird es als neu definierte Definition anstelle eines Verweises auf eine externe Variable erkannt und es tritt ein Fehler auf.prev
mit numpy.nan
initialisiert wird, wird es so ausgegeben, wie es ist, bis es nicht mehr numpy.nan
ist.