[PYTHON] Unterschied in der Ausgabe der Fensterfunktion mit gerader Länge

Einführung

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)

Vergleich

Es gibt drei Arten von Kandidaten zum Vergleichen. Die Fensterbreite beträgt $ N $.

Vergleichsergebnis

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])

Warum

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.

Verweise

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

Unterschied in der Ausgabe der Fensterfunktion mit gerader Länge
Implementierung der Login-Funktion in Django
Ausgabebaumstruktur von Dateien in Python
Geben Sie die Anzahl der CPU-Kerne in Python aus
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
[Linux] Unterschied in den Zeitinformationen in Abhängigkeit von der Uhr-ID der Funktion clock_gettime ()
Holen Sie sich den Aufrufer einer Funktion in Python
Lesen Sie die Ausgabe von subprocess.Popen in Echtzeit
Überprüfung der Paging-Implementierung nach Relay-Stil in GraphQL (Version mit Fensterfunktion)
Korrigieren Sie die Argumente der in map verwendeten Funktion
Gacha geschrieben in Python-Addition der Periodeneinstellungsfunktion-
Ausgabe in Form eines Python-Arrays
Dualität in der Funktion
Projekt Euler # 6 "Differenz in der Summe der Quadrate" in Python
Geschwindigkeitsbewertung der Ausgabe von CSV-Dateien in Python
Unterschied zwischen Ruby und Python in Bezug auf Variablen
[Cinema 4D] -Funktion zum Überprüfen aller Objekte in der Szene
[Python] Berechnung der Differenz von Datum und Zeit in Monaten und Jahren
Unterschied in den Ergebnissen abhängig vom Argument von multiprocess.Process
Funktionen parallel ausführen
Japanische Ausgabe mit Python
Grundlagen von Python: Ausgabe
Funktion von NumPy einstellen
Lassen Sie das Gleichungsdiagramm der linearen Funktion in Python zeichnen
Ein Memo, dass ich eine Grundfunktion in Python mit Wiederholung geschrieben habe
Machen Sie die Funktion zum Zeichnen japanischer Schriftarten in OpenCV allgemein
Koordination jedes Prozesses im MPI und Pufferung der Standardausgabe