Ich möchte ein Leistungsspektrum berechnen, in dem die Frequenzen logarithmisch voneinander beabstandet sind.
Bei der Welch-Methode gibt es einen Kompromiss zwischen der Frequenzauflösung des resultierenden Leistungsspektrums und der Anzahl der Mittelwerte (dh Fehler im Ergebnis). Ich möchte, dass dieser Kompromiss dynamisch ist, dh weniger Mittelwerte für Niederfrequenzpunkte erstellt, um eine feinere Auflösung bei Niederfrequenz zu erzielen.
Gibt es eine Standardmethode, um dies zu tun?
Ich nehme an, eine Möglichkeit wäre, zunächst pwelch
mit einer sehr hohen Auflösung (niedrige Anzahl von Durchschnitten) zu arbeiten und dann das resultierende Spektrum unter Verwendung von logarithmischem Binning zu rebinieren.
Antworten:
Ich habe einen Artikel gefunden, der diese Frage direkt anspricht:
Die ersten paar Abbildungen in der Veröffentlichung veranschaulichen das Problem, das dieser Algorithmus löst, und die Referenzen enthalten eine nützliche Bibliographie anderer Ansätze (Konstant-Q-Transformation, temperierte Fouriertransformation, ein Übersichtsartikel usw.).
Ihr Ansatz besteht nicht darin, die Ausgabe einer vorhandenen FFT-basierten Leistungsspektrumschätzung neu zu binieren, sondern nur die diskrete Fourier-Transformation bei den interessierenden (logarithmisch beabstandeten) Frequenzen zu berechnen. Für jede zu schätzende Frequenz implementieren sie grundsätzlich den Welch-Algorithmus, jedoch mit einer Transformationslänge (und damit auch einer Anzahl von Durchschnittswerten), die speziell für jede Frequenz ausgewählt wurde. Die Berechnung jedes Frequenzbereichs verwendet die gesamte Zeitreihe, ist jedoch unterschiedlich segmentiert. Die Ergebnisse haben die wünschenswerte Eigenschaft, dass die Auflösung (Bin-Breite) eine glatte Funktion der Frequenz ist und die Ergebnisse entweder als Leistungsspektraldichte oder als Leistungsspektrum kalibriert werden können.
Matlab-Implementierung hier: https://github.com/tobin/lpsd
Offenlegung: Die Autoren dieses Papiers sind an der gleichen Institution wie ich.
quelle
In diesem Fall würde ich eine Methode der kleinsten Quadrate verwenden , um die Häufigkeit einiger bekannter Wertelisten zu berechnen. Die gebräuchlichste Methode ist die Lomb-Methode. Es funktioniert ziemlich ähnlich wie eine FFT oder DFT, berechnet jedoch nur die Frequenz bei bestimmten Frequenzen und kann fehlende Daten verarbeiten, falls dies ein Problem sein sollte. Die Idee ist wie folgt:
Beachten Sie, dass dies nicht so gut skaliert wie eine FFT. Daher würde ich dies nur tun, wenn die Anzahl der gewünschten Frequenzen viel geringer ist als die FFT, die zum Sammeln aller Daten erforderlich wäre.
Ansonsten könnte man eine Interpolationsmethode oder eine andere Neuabtastung einer FFT oder DFT durchführen.
quelle