Gibt es eine praktische Anwendung für die Durchführung einer Doppel-Fourier-Transformation? … Oder eine inverse Fourier-Transformation auf einem Zeitbereichseingang?

11

In der Mathematik können Sie die doppelte Ableitung oder das doppelte Integral einer Funktion verwenden. Es gibt viele Fälle, in denen das Durchführen eines Modells mit doppelter Ableitung eine praktische reale Situation darstellt, z. B. das Finden der Beschleunigung eines Objekts.

Da die Fourier-Transformation ein reales oder komplexes Signal als Eingang nimmt und ein komplexes Signal als Ausgang erzeugt, hindert Sie nichts daran, diesen Ausgang zu nehmen und die Fourier-Transformation ein zweites Mal anzuwenden ... Gibt es praktische Verwendungsmöglichkeiten dafür? Dies? Hilft es, einige komplexe Situationen in der realen Welt zu modellieren?

Mit der gleichen Logik würde Sie nichts daran hindern, die inverse Fourier-Transformation Ihres ursprünglichen Zeitbereichs-Eingangssignals durchzuführen ... wäre dies jemals nützlich? Warum oder warum nicht?

tjwrona1992
quelle

Antworten:

8

"Gibt es eine praktische Anwendung?" Auf jeden Fall ja, zumindest um Code zu überprüfen und Fehler zu binden.

"In Theorie, Theorie und Praxis stimmen sie überein. In der Praxis tun sie das nicht." Also, mathematisch gesehen, nein, wie von Matt beantwortet. Weil (wie bereits beantwortet) F(F(x(t)))=x(t) (bis zu einem möglichen Skalierungsfaktor). Es kann jedoch rechnerisch nützlich sein, da die obige Gleichung normalerweise über die diskrete Fourier-Transformation und ihren schnellen Avatar, die FFT, implementiert wird.

Ein erster Grund ergibt sich aus dem Willen zu überprüfen, ob die Fourier-Implementierung, ob von Ihnen, jemand anderem oder aus einer Bibliothek codiert, das tut, was sie für Ihre Daten tun sollte. Probenreihenfolge, Skalierungsfaktoren, Grenzen des Eingabetyps (Realität, Bittiefe) oder Länge sind Quellen für mögliche nachfolgende Fehler bei Fourier-Implementierungen wie der FFT. Zur Überprüfung der Integrität ist es immer gut zu überprüfen, ob die implementierten Versionen zumindest ungefähr die theoretischen Eigenschaften erben. Wie Sie sehen werden, stellen Sie, wie von Machupicchu gezeigt, nicht genau eine umgekehrte reale Eingabe wieder her: Oft ist der Imaginärteil nicht genau Null, und der Realteil ist das, was erwartet wird, aber aufgrund unvollständiger Computerberechnungen innerhalb eines kleinen relativen Fehlers (Gleitkomma) innerhalb einer maschinenabhängigen Toleranz. Dies wird auf dem folgenden Bild sichtbar gemacht. Die FFT wird zweimal auf ein zufälliges 32-Abtast-Signal angewendet und umgedreht. Wie Sie sehen können, ist der Fehler bei Verwendung von Floats mit doppelter Genauigkeit gering.

Daten, seine doppelt umgedrehte FFT und Fehler

Wenn der Fehler nicht relativ klein ist, kann der von Ihnen verwendete Code fehlerhaft sein.

x01e6

xk+1=R.e(f(f(f(f(xk)))))
fmax|xk- -x0|

Daten, ihre vierfache FFT und maximale Fehler über Iterationen

10001000×1000×1000

Das Begrenzen des Fehlers und das Bewerten seines Verhaltens über Iterationen kann dazu beitragen, solche Verhaltensweisen zu erkennen und dann durch geeignete Schwellenwerte oder Rundungen zu reduzieren.

Zusätzliche Information:

Laurent Duval
quelle
1
Ich liebe diese Antwort wirklich und hätte sie als akzeptierte Antwort markiert, aber ich denke, dass die meisten Leute, die zu dieser Frage kommen, nach den theoretischen Informationen suchen werden, die Matt im Link bereitgestellt hat. +1 für eine gute Antwort.
tjwrona1992
1
Ich freue mich sehr über Ihren Kommentar. Ich habe die Antwort jedoch mit entsprechenden Zahlen aktualisiert, um zu zeigen, dass Fehler in diskreten Fourier-Implementierungen von Bedeutung sind.
Laurent Duval
17

x(t)

Die inverse Fourier-Transformation, die auf ein Zeitbereichssignal angewendet wird, ergibt nur das Spektrum mit Frequenzinversion. Schauen Sie sich diese Antwort für weitere Details an.

Matt L.
quelle
4
Du hast mich nur rekursiv umgehauen.
tjwrona1992
Illustriere ich was Matt. L sagte aber in 2D mit meinem Code? dh wir bekommen f (-x, -y).
Machupicchu
@ Machupicchu, ja das sieht richtig aus.
tjwrona1992
haha dann kannst du meine Antwort und die oberste auswählen ^^ (er hat 53K Wiederholungen, so dass es für ihn keinen
Machupicchu
Gleich nachdem ich gesagt hatte, dass mir klar wurde, dass es wahrscheinlich einfachere Wege als eine doppelte Fourier-Transformation gibt, um ein Signal zeitlich zu invertieren, haha
tjwrona1992
16

Während Sie die Fourier-Transformation direkt zweimal hintereinander durchführen, erhalten Sie nur eine triviale Zeitinversion, die ohne FT viel billiger zu implementieren wäre. Es gibt jedoch nützliche Dinge, die Sie tun können, indem Sie eine Fourier-Transformation durchführen, eine andere Operation anwenden und dann noch einmal Fourier transformiert das Ergebnis davon. Das bekannteste Beispiel ist die Autokorrelation , eine Art Faltung eines Signals mit sich selbst. Und Faltungen sind O ( n 2 ), wenn sie naiv implementiert werden, aber nur O ( n · log n) bei einem Umweg über Fourier-Transformation. Die Autokorrelation erfolgt also im Allgemeinen durch FT'ing eines Signals, Aufnehmen des absoluten Quadrats und IFT-Zurücksetzen dieses Signals in den Zeitbereich.

links herum
quelle
2
Es gibt auch Cepstrum , die inverse Fourier-Transformation des Logarithmus der Fourier-Transformation. Es kann verwendet werden, um periodische Signale zu erfassen.
Olli Niemitalo
11

II(x,y)=zxy

https://ch.mathworks.com/help/matlab/ref/fft2.html

Versuche dies:

x=imread('cameraman.tif');
X=fft2(fft2(x));
imagesc(abs(X));

und vergleiche mit:

x=imread('cameraman.tif');
X= ifft2(fft2(x));
imagesc(abs(X));

eher so. Ich habe fft2 mal angewendet, nicht ifft2 das zweite Mal. Ich denke, das zeigt, was @Matt L. gesagt hat:

"Die zweimalige Fourier-Transformation entspricht einer Zeitinversion",

Sie können sehen, dass das Bild aufgrund des imaginären Negativs -i anstelle des Positivs in ifft () invertiert ist.

Geben Sie hier die Bildbeschreibung ein

Ich habe es auch für ein 1D-Signal gemacht (zB zeitlich):

Geben Sie hier die Bildbeschreibung ein

Machu Picchu
quelle
Ich bin mir bewusst, dass es so etwas wie eine 2D-Fourier-Transformation gibt, aber das ist nicht dasselbe, als würde man ein Eingangssignal nehmen und es durch den Algorithmus laufen lassen, dann die Ausgabe dieses Laufs nehmen und es erneut durchlaufen.
tjwrona1992
1
Die Fourier-Transformation ist trennbar.
Machupicchu
Meine Frage würde auch für eine 2D-Fourier-Transformation gelten. Sie könnten theoretisch ein 2D-Eingangssignal nehmen, die 2D-Fourier-Transformation anwenden, dann das 2D-Ausgangssignal nehmen und es als Eingabe verwenden und die 2D-Fourier-Transformation erneut anwenden.
tjwrona1992
Schauen Sie in Matlab nach, was passiert, wenn Sie Folgendes tun: vgl. Ich habe meine Antwort aktualisiert
Machupicchu
1
Ich würde vorschlagen, dass Sie den Realteil anstelle des absoluten Wertes verwenden
Laurent Duval
6

Um die zweite Frage, in der digitalen Kommunikation zu beantworten gibt es eine Technik , bei Einsatz in Handys jetzt , die von der Anwendung des IFFT auf ein Zeitsignal guten Gebrauch macht. OFDM wendet eine IFFT auf eine Zeitbereichssequenz von Daten am Sender an und kehrt diese dann mit einer FFT am Empfänger um. Während die Literatur gerne IFFT-> FFT verwendet, macht es wirklich keinen Unterschied, welches zuerst kommt.

Diagramm des OFDM-Senders

Der Hauptvorteil hier hängt stark mit der Antwort von leftaroundabout zusammen. Es gibt eine Art von Verzerrung, die aufgerufen wird Multipath-Fading bezeichnet wird , und Mobiltelefone in dichten städtischen Gebieten müssen sich mit vielem auseinandersetzen. Wir modellieren Multipath-Fading gerne als Faltung mit unbekannten Koeffizienten. Da die Ereigniskette ungefähr so ​​aussieht wie IFFT-> Senden-> Multipath-> Empfangen-> FFT anwenden, durchläuft das Multipath-Fading die FFT und wird zu einer einfachen Punkt-für-Punkt-Multiplikation mit unbekannten Werten. Diese Werte sind viel einfacher vorherzusagen und zu korrigieren als die Faltungskoeffizienten.

Dieser Effekt macht ein Signal auch widerstandsfähiger gegen Mehrweg / Fading, das einen gesamten Frequenzkanal herausnehmen (oder "null") könnte. Dieser Artikel beschreibt, wie

Eine solche Mehrwegeausbreitung kann aufgrund der destruktiven Interferenz von zwei Kopien des Signals, die zu leicht unterschiedlichen Zeiten ankommen, tiefe spektrale Nullstellen im Frequenzpassband empfangener Funksignale erzeugen. Eine Null in OFDM kann einen oder mehrere Unterträger ausschalten. Dieselbe Null im Einzelträger-QAM kann abhängig von dem spezifischen Datenmuster zu diesem Zeitpunkt einen Burst von nacheinander benachbarten Symbolen löschen. In extremen Fällen ist sogar ein Verlust der Signalerfassung möglich. Es liegt dann an der Leistung der FEC, die ursprüngliche Datensequenz wiederherzustellen.

myeslf
quelle
Wow das ist unglaublich interessant! Vielen Dank! :)
tjwrona1992
1

Diese Informationen wurden vom Benutzer "Birdwes" bereitgestellt, aber er hatte nicht genug Ruf, um sie selbst zu veröffentlichen, daher werde ich sie hier für ihn veröffentlichen, da sie relevant und nützlich erscheinen.

"Ich habe nicht genug Punkte in diesem Forum, um einen Kommentar hinzuzufügen, also mache ich es hier: Schauen Sie sich den Quellcode für Accord.Math Hilbert Transform an und Sie werden sehen, warum dies eine praktikable Option sein kann: https: //github.com/primaryobjects/Accord.NET/blob/master/Sources/Accord.Math/Transforms/HilbertTransform.cs

Praktische Anwendungen umfassen den Bau von SSB-Sendern oder fast jeden Modulationsplan. Wenn Sie die IQ-Modulation nachschlagen, werden Sie sehen, warum die Phasenverschiebung von -90 Grad relevant ist. Ein Produkt trigonometrischer Prinzipien. zB https://user.eng.umd.edu/~tretter/commlab/c6713slides/ch7.pdf

Die Hilbert-Transformation verwendet einen mittleren Schritt zwischen den FFTs, um negative Komponenten auf Null zu setzen. Sie können es missbrauchen, um auch andere Frequenzen herauszufiltern. "

tjwrona1992
quelle