Ich habe die Aufgabe im Zusammenhang mit der Radon-Transformation, die eine Unteraufgabe enthält, die Resampling mittels DFT verwendet.
Betrachten wir das nichtperiodische diskretisierte Signal (Abb. 1) (zum Beispiel die Pixelfolge) mit einer Länge von 515 Pixeln. In meiner Implementierung zum Resampling sind folgende Schritte enthalten:
- Zyklische Linksverschiebung (Abb.2).
- Addiere Nullen zur Mitte, damit die Länge des Signals 2 ^ n wird (in unserem Fall 1024-515 = 509 Nullen müssen wir addieren) (Abb. 3).
- Holen Sie sich DFT von diesem Signal (Abb. 4).
- Zyklische Rechtsverschiebung. (zum Verschieben niedriger Frequenzen in die Mitte) (Abb.5)
Abb.1
Abb.2
Abb. 3
Abb.4
Abb.5
Die Hauptfrage:
Warum müssen wir eine zyklische Verschiebung des Signals durchführen und genau in der Mitte Nullen hinzufügen? (Ich nahm an, was das Signal periodisch machte) Zeropadding macht Interpolation DFT-Spektrum, ist es richtig? (Ich habe gefragt und jemand sagt, was nicht ganz so ist.) Vielleicht kann jemand auf einfache Weise erklären, was mit dem Signal nach dem Null-Auffüllen passiert.
Ich habe einige Experimente in einem Matlab durchgeführt und festgestellt, dass jede andere Abfolge von Aktionen nicht das erforderliche Ergebnis liefern kann.
Betrachten wir nun zwei Fälle:
a) (DIESE RICHTIGE VARIANTE) Wir haben das nichtperiodische diskretisierte Signal (zum Beispiel die Pixelfolge), das zyklisch nach links verschoben wird und in der Mitte Nullen füllt, nachdem DFT daraus erhalten und zurück verschoben wird.
b) Wir haben das nichtperiodische diskretisierte Signal (zum Beispiel die eingestellten Pixelfolgen), das von links und rechts mit Nullen gefüllt wird, nachdem daraus DFT erhalten wurde.
Was ist der Unterschied zu diesen DFT-Spektren?
Ich habe einige Bücher gelesen, aber keine Antwort auf den Fall dieses Nullpolsters gefunden. Es scheint, dass dies nur durch eigene Erfahrung gefunden werden kann.
Antwort im Buch:
AC Kak und Malcolm Slaney, Prinzipien der computergestützten tomographischen Bildgebung, Gesellschaft für industrielle und angewandte Mathematik, 2001 auf Seite 25
quelle
Antworten:
Das Verschieben der Datenpunkte (fftshift) und das Auffüllen der exakten Mitte der FFT-Apertur auf Null haben die Eigenschaft, dass alle geraden (symmetrischen) Komponenten in Bezug auf die Mitte des ursprünglichen Datensatzes im Realteil des komplexen FFT-Ergebnisses landen und alle ungeraden Komponenten landen im Imaginärteil. zB bleibt das Verhältnis von Gleichmäßigkeit zu Seltsamkeit erhalten, wodurch die Phase (in Bezug auf die Mitte des Fensters) leicht interpoliert werden kann.
In der Lage zu sein, die Phase zu interpolieren, ist im Fall einer mit Nullen gepolsterten FFT wichtig, da die Nullpolsterung auch die spektrale Größe interpoliert. Da das Auffüllen mit Nullen zu einem interpolierten FFT-Ergebnis führt, bedeutet dies, dass alle ursprünglichen nicht interpolierten FFT-Ergebnispunkte aus dem mit Nullen aufgefüllten Ergebnis interpoliert werden müssen. Ohne eine FFT-Verschiebung sowohl der nicht aufgefüllten als auch der nicht aufgefüllten Daten unterscheiden sich diese interpolierten Ergebnisse von den nicht interpolierten FFT-Ergebnissen (in Phase).
Diese Technik ist ein einfaches Ergebnis (Hausaufgaben- oder Quizstufe) der FT-Eigenschaft, dass eine Verschiebung in einer Domäne eine komplexe Frequenzmodulation in der anderen Domäne ist.
quelle
@Roman: Nach meiner Erfahrung führt die Interpolation (sagen wir mal Faktor 2) zu einer höheren Abtastfrequenz (hochgetastetes Signal (2 * Fs)), unabhängig davon, ob wir dies im Zeitbereich oder im Frequenzbereich tun. Für die Zeitbereichsinterpolation fügen wir Nullen in alternative Abtastwerte ein, genauso wie wir Nullen einfügen, weil wir das Signal in eine höhere Abtastfrequenz umwandeln, indem wir die Signalbandbreite unberührt lassen. Der genaue Grund für die "Mittenfüllung" liegt im Zusammenhang mit dem FFT-Index gegenüber dem Basisband-Index (BB). Beispiel: Signal BW fm und Abtastfrequenz Fs. Im Frequenzbereich ist das Signal fm bei + NFs und -NFs zentriert, wobei N eine ganze Zahl (0,1,2 ...) ist. Das Signal um DC (Basisbandsignal) belegt von -fm / 2 bis fm / 2 und das Signal bei Fs belegt von Fs-fm / 2 bis Fs + fm / 2 usw. Alle diese Replikate tragen die gleichen Informationen. Anstatt -fm / 2 für DC zu berücksichtigen, Wir betrachten Fs-fm / 2 (beide sind gleich), nur der Unterschied ist positiv oder negativ. Schließlich ist das Signal, das wir betrachten, {[DC zu fm / 2] [Fs-fm / 2 zu Fs]}. Aus diesem Grund füllen wir zusätzliche Nullen (abhängig vom Upsampling-Faktor) zwischen [fm / 2 zu Fs-fm / 2] mit das ursprüngliche Signal fm intakt halten.
quelle
Wenn ich eine Ausgabe vom Bandpassfilter habe und sie wieder in den Zeitbereich konvertieren möchte.
Ist es auch der richtige Ansatz für die zyklische Verschiebung nach links und das Auffüllen von Nullen in der Mitte, bevor das Fenster angewendet und wieder in den Zeitbereich konvertiert wird?
quelle