Es gibt mehrere Möglichkeiten, eine Fensterfunktion zu generieren, die bei der Signalverarbeitung mit "Python" weit verbreitet ist. Da sich das Verhalten je nach Generierungsmethode geringfügig unterscheidet, notieren Sie es als Memorandum. (Beschränkt auf das Summen von Fenstern hier. Vielleicht passieren ähnliche Dinge mit jedem Fenster)
Es gibt drei Arten von Kandidaten zum Vergleichen. Die Fensterbreite beträgt $ N $.
numpy.hamming(N)
scipy.signal.hamming(N)
scipy.signal.get_window('hamming', N)
Gleiches gilt, wenn $ N $ ungerade ist.
>>> import scipy.signal, numpy
>>> N = 5
>>> numpy.hamming(N)
array([ 0.08, 0.54, 1. , 0.54, 0.08])
>>> scipy.signal.hamming(N)
array([ 0.08, 0.54, 1. , 0.54, 0.08])
>>> scipy.signal.get_window('hamming', N)
array([ 0.08, 0.54, 1. , 0.54, 0.08])
Die Situation ändert sich jedoch, wenn $ N $ eine gerade Zahl wird. (get_window
)
>>> import numpy, scipy.signal
>>> N = 4
>>> numpy.hamming(N)
array([ 0.08, 0.77, 0.77, 0.08])
>>> scipy.signal.hamming(N)
array([ 0.08, 0.77, 0.77, 0.08])
>>> scipy.signal.get_window('hamming', N)
array([ 0.08, 0.54, 1. , 0.54])
Wenn Sie jedoch "False" in das dritte Argument von "get_window" einfügen, ist das Ergebnis dasselbe.
>>> scipy.signal.get_window('hamming', N, False)
array([ 0.08, 0.77, 0.77, 0.08])
scipy.signal.hamming
und numpy.hamming
sind standardmäßig
Generieren Sie den Wert der Fensterfunktion so, dass er symmetrisch ist.
Andererseits generiert "get_window" einen "periodischen" (?) Wert, um die Verwendung in FFT zu vereinfachen.
Wenn Sie das dritte Argument auf "Falsch" setzen, werden symmetrische Werte erzeugt, die für den Filter einfach zu verwenden sind.
Daher unterscheidet sich das Standardverhalten je nach Funktion.
http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.hamming.html http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.get_window.html
Recommended Posts