Zum Beispiel scheint es für die Ermittlung der Spitzenfrequenz gültig zu sein, bandbegrenzte Interpolationsmethoden für die komplexen DFT-Bins oder getrennt für deren Real- und Imaginärteil zu verwenden und die Größen oder quadratischen Größen der Ergebnisse zu berechnen. Aber wie wäre es mit einer bandbegrenzten Interpolation der Größen der Bins (ich glaube nicht, dass das gültig ist) oder ihrer quadratischen Größen (möglicherweise gültig)? Mit gültig meine ich, dass perfekt interpolierte Werte gleich denen sein sollten, die durch Berechnung aus einer größeren DFT einer mit Nullen aufgefüllten Version des Zeitbereichssignals ermittelt wurden.
Der erste Ansatz garantiert ein nicht negatives Ergebnis, im Gegensatz zu den anderen, wenn die Interpolation nicht perfekt ist. Siehe diese Frage zur nichtnegativen oder positiven bandbegrenzten Interpolation .
quelle
Antworten:
Interpolierte Punkte der DFT können unter Verwendung eines Punktprodukts einiger Abtastwerte um den Peakbereich mit einem vorberechneten Interpolationsvektor berechnet werden. Der Interpolationsvektor wird durch den Ort der gewünschten interpolierten Probe bestimmt, wobei der Betrag der erforderlichen Nullauffüllung usw. usw. berücksichtigt wird.
Diese Technik und die Methode zur Berechnung der Interpolationsvektoren werden in Anhang B dieses Dokuments behandelt:
http://ericjacobsen.org/FTinterp.pdf
Ich hoffe das hilft ein bisschen.
quelle
Zuerst eine Demonstration, dass die Quadrate von beiden
gleich
Die Quadrate ihrer Sinc-Interpolationen unterscheiden sich jedoch (Abb. 1):
Abbildung 1. Quadrate der Sinusinterpolationen von
Dies zeigt, dass es im Allgemeinen nicht möglich ist, das Quadrat eines bandbegrenzten Signals aus seinen einheitlichen Abtastwerten wiederherzustellen, die bei der kritischen Abtastfrequenz des bandbegrenzten Signals entnommen wurden.
Testen wir verschiedene Interpolationsansätze in Octave. Der Goldstandard der bandbegrenzten Interpolation ist DFT-Zero-Pad-DFT:
Der letzte Satz von Zahlen sind die Größenwerte, die aus perfekt interpolierten Frequenzbereichsfächern berechnet wurden. Versuchen wir stattdessen, die Größe zu interpolieren :
Scheint ziemlich weit weg zu sein. Versuchen wir nun, die quadratische Größe zu interpolieren :
Es ist nicht nur ausgeschaltet, sondern gibt auch
sqrt()
eine komplexe Zahl für einen negativen interpolierten Wert zurück. Ist also die einzig gültige Möglichkeit, die Bin-Werte zu interpolieren?Geben wir diesem eine weitere Chance, indem wir versuchen, Frequenzbereichsdaten zu interpolieren, die um den Faktor 2 hochgetastet wurden. Aufgrund der Transformation mit gerader Länge muss das "Nyquist-Sample" dupliziert werden. Entschuldigen Sie daher, wenn der Code schwer zu lesen ist.
Das Obige ist was wir wollen. Versuchen wir, 2x hochgetastete Größe zu interpolieren :
Das ist noch aus. Versuchen wir, 2x hochgetastete quadratische Größe zu interpolieren :
Jetzt funktioniert es perfekt! Die Nachricht zum Mitnehmen besteht darin, vor dem Versuch, im Frequenzbereich zu interpolieren, ein Upsampling (Zeitbereich-Null-Pad) um mindestens den Faktor zwei durchzuführen und die quadratische Größe anstelle der Größe zu interpolieren. Dies funktioniert, weil die quadratische Größe der Multiplikation jedes Bin-Werts mit seinem komplexen Konjugat entspricht. Die komplexe Konjugation bewahrt die Bandbreite der durch die Daten dargestellten bandbegrenzten Funktion, sodass die Multiplikation die "Zeitbereichsbandbreite" verdoppelt, da sie der Zeitbereichsfaltung entspricht. Beachten Sie, dass bei der Auswahl der Interpolationsmethode die 2x hochgetastete quadratische Größe immer noch kritisch abgetastet wird, sodass eine weitere Überabtastung die genaue Interpolation erheblich erleichtern sollte.
Ich habe ungefähr meine eigene Frage beantwortet, werde aber weitere Einsichten als Antwort akzeptieren!
PS Ich habe gerade herausgefunden, dass es auch eine
interpft
Interpolation mit weniger Syntax gibt.Zusätzliche Informationen nutzen
Die Interpolation wird durch zusätzliche Informationen zu den Daten einfacher oder sogar genauer, zum Beispiel, dass es sich um eine kritisch abgetastete quadratische zeitversetzte Sinc handelt. In diesem Fall gegeben die zwei Probenα kurz vor und γ kurz nach der größten Stichprobe die Zeit - 1 < d< 1 des Peaks kann berechnet werden durch:
mitd= 0 Dies bedeutet, dass der Sinc genau auf die Zeit der größten Stichprobe verschoben wird. Dieselbe Interpolation kann mit der halben Abtastrate durchgeführt werden, bei der es sich um die kritische Abtastfrequenz der zugrunde liegenden Funktion handelt, deren Größe der einer zeitversetzten Sinc mit den beiden aufeinanderfolgenden Abtastwerten mit dem größten Wert entsprichtα und β des Quadrats des Absolutwerts der zugrunde liegenden Funktion:
Die Formeln werden durch die Amplitudenskalierung der Daten nicht beeinflusst. Für die Frequenzschätzung hätten Sie selten eine rein zeitversetzte Sinc in Echtzeit, aber wenn Sie dies tun, gibt es genaue Interpolationsformeln dafür .
quelle