Ob Sie die Ausgabe Ihrer DFT skalieren, vorwärts oder rückwärts, hat nichts mit Konvention oder dem, was mathematisch sinnvoll ist, zu tun. Es hat alles mit der Eingabe in die DFT zu tun. Lassen Sie mich einige Beispiele zeigen, bei denen die Skalierung sowohl für die Vorwärts- als auch für die Rücktransformation erforderlich ist oder nicht.
Muss eine Vorwärtstransformation um 1 / N skalieren.
Zunächst sollte klar sein, dass für die Analyse einer einfachen Sinuswelle die Länge der Transformation mathematisch gesehen irrelevant sein sollte. Angenommen, N = 1024, Freq = 100 und Ihr Signal ist:
f (n) = cos (Freq * 2 * Pi * n / N)
Wenn Sie eine DFT von 1024 Punkten von f (n) nehmen, werden Sie feststellen, dass bin [100] = 512. Dies ist jedoch kein aussagekräftiger Wert, bis Sie ihn auf N skalieren. 512/1024 = 1/2 und natürlich Die andere Hälfte liegt im negativen Spektrum von bin [924].
Wenn Sie die Länge der DFT verdoppeln, N = 2048, sind die Ausgabewerte doppelt so groß wie die der 1024-Punkt-DFT, was die Ergebnisse wiederum bedeutungslos macht, es sei denn, wir skalieren mit 1 / N. Die Länge der DFT sollte bei solchen Analysen keine Rolle spielen. In diesem Beispiel müssen Sie die DFT also um 1 / N skalieren.
Darf keine Vorwärtstransformation skalieren.
Angenommen, Sie haben die Impulsantwort eines FIR-Filters mit 32 Abgriffen und möchten dessen Frequenzgang kennen. Der Einfachheit halber wird ein Tiefpassfilter mit einer Verstärkung von 1 angenommen. Wir wissen, dass für dieses Filter die Gleichstromkomponente der DFT 1 sein muss. Und es sollte klar sein, dass dies unabhängig von der Größe des Filters der Fall ist DFT, weil die Gleichstromkomponente einfach die Summe der Eingangswerte ist (dh die Summe der FIR-Koeffizienten).
Daher wird für diese Eingabe die DFT nicht mit 1 / N skaliert, um eine aussagekräftige Antwort zu erhalten. Aus diesem Grund können Sie eine Impulsantwort so weit auf Null setzen, wie Sie möchten, ohne das Ergebnis der Transformation zu beeinflussen.
Was ist der grundlegende Unterschied zwischen diesen beiden Beispielen?
Die Antwort ist einfach. Im ersten Fall haben wir für jede Eingangsprobe Energie geliefert. Mit anderen Worten, die Sinuswelle war für alle 1024 Samples vorhanden, daher mussten wir die Ausgabe der DFT auf 1/1024 skalieren.
Im zweiten Beispiel haben wir per Definition nur für 1 Probe Energie geliefert (der Impuls bei n = 0). Es dauerte 32 Abtastungen, bis der Impuls den 32-Stufen-Filter durchlaufen hatte, aber diese Verzögerung ist irrelevant. Da wir für 1 Probe Energie geliefert haben, skalieren wir die Ausgabe der DFT auf 1. Wenn ein Impuls mit 2 Energieeinheiten anstelle von 1 definiert würde, würden wir die Ausgabe auf 1/2 skalieren.
Eine inverse Transformation darf nicht skaliert werden.
Betrachten wir nun eine inverse DFT. Wie bei der Forward-DFT müssen wir die Anzahl der Proben berücksichtigen, die wir mit Energie versorgen. Natürlich müssen wir hier etwas vorsichtiger sein, da wir sowohl die positiven als auch die negativen Frequenzbereiche entsprechend füllen müssen. Wenn wir jedoch einen Impuls (dh eine 1) in zwei entsprechende Bins platzieren, ist das resultierende Ausgangssignal der inversen DFT eine Kosinuswelle mit einer Amplitude von 2, unabhängig davon, wie viele Punkte wir in der inversen DFT verwenden.
Daher skalieren wir wie bei der Vorwärts-DFT die Ausgabe der inversen DFT nicht, wenn die Eingabe ein Impuls ist.
Eine inverse Transformation muss skaliert werden.
Betrachten Sie nun den Fall, in dem Sie den Frequenzgang eines Tiefpassfilters kennen und eine inverse DFT durchführen möchten, um dessen Impulsantwort zu erhalten. Da wir in diesem Fall an allen Punkten Energie liefern, müssen wir die Leistung der DFT um 1 / N skalieren, um eine aussagekräftige Antwort zu erhalten. Dies ist nicht ganz so offensichtlich, da die Eingabewerte komplex sind. Wenn Sie jedoch ein Beispiel durcharbeiten, werden Sie feststellen, dass dies zutrifft. Wenn Sie nicht mit 1 / N skalieren, haben Sie Spitzenimpulsantwortwerte in der Größenordnung von N, was bei einer Verstärkung von 1 nicht der Fall sein kann.
Die vier Situationen, die ich gerade beschrieben habe, sind Endpunktbeispiele, bei denen klar ist, wie die Ausgabe der DFT skaliert wird. Zwischen den Endpunkten befindet sich jedoch viel Grauzone. Betrachten wir also ein weiteres einfaches Beispiel.
Angenommen, wir haben das folgende Signal mit N = 1024, Freq = 100:
f(n) = 6 * cos(1*Freq * 2*Pi * n/N) n = 0 - 127
f(n) = 1 * cos(2*Freq * 2*Pi * n/N) n = 128 - 895
f(n) = 6 * cos(4*Freq * 2*Pi * n/N) n = 896 - 1023
Beachten Sie die Unterschiede in Amplitude, Frequenz und Dauer für die drei Komponenten. Leider zeigt die DFT dieses Signals alle drei Komponenten auf dem gleichen Leistungspegel an, obwohl die 2. Komponente 1/36 des Leistungspegels der anderen beiden hat.
Die Tatsache, dass alle drei Komponenten dieselbe Energiemenge liefern, ist offensichtlich, was die DFT-Ergebnisse erklärt, aber hier muss ein wichtiger Punkt beachtet werden.
Wenn wir die Dauer für die verschiedenen Frequenzkomponenten kennen, können wir die verschiedenen Frequenzbereiche entsprechend skalieren. In diesem Fall würden wir dies tun, um die Ausgabe der DFT genau zu skalieren: bin [100] / = 128; bin [200] / = 768; bin [400] / = 128;
Was mich zu meinem letzten Punkt bringt; Im Allgemeinen wissen wir nicht, wie lange eine bestimmte Frequenzkomponente am Eingang unserer DFT vorhanden ist, daher können wir diese Art der Skalierung möglicherweise nicht durchführen. Im Allgemeinen liefern wir jedoch Energie für jeden Abtastpunkt, weshalb wir die Vorwärts-DFT bei der Analyse eines Signals um 1 / N skalieren sollten.
Um die Sache zu komplizieren, würden wir mit ziemlicher Sicherheit ein Fenster auf dieses Signal anwenden, um die spektrale Auflösung der DFT zu verbessern. Da sich die erste und dritte Frequenzkomponente am Anfang und Ende des Signals befinden, werden sie um 27 dB gedämpft, während die mittlere Komponente nur um 4 dB gedämpft wird (Hanning-Fenster).
Um klar zu sein, der Ausgang der DFT kann eine ziemlich schlechte Darstellung des Eingangs, skaliert oder nicht.
Bei der inversen DFT, bei der es sich normalerweise um ein rein mathematisches Problem handelt, ist die Eingabe in die DFT im Gegensatz zur Analyse eines unbekannten Signals klar definiert, sodass Sie wissen, wie die Ausgabe skaliert wird.
Bei der Analyse eines Signals mit einem Spektrumanalysator (analog oder FFT) sind die Probleme ähnlich. Sie kennen die Leistung des angezeigten Signals nur, wenn Sie auch den Arbeitszyklus kennen. Aber auch dann wirken sich die Fensterung, die Spanne, die Abtastraten, die Filterung, der Detektortyp und andere Faktoren auf das Ergebnis aus.
Letztendlich muss man beim Wechsel zwischen den Zeit- und Frequenzbereichen sehr vorsichtig sein. Die Frage, die Sie bezüglich der Skalierung gestellt haben, ist wichtig. Ich hoffe, Sie müssen die Eingabe für die DFT verstehen, um die Ausgabe skalieren zu können. Wenn der Input nicht klar definiert ist, muss der Output der DFT mit großer Skepsis betrachtet werden, egal ob Sie ihn skalieren oder nicht.