Verwirrung bei der FFT einer Rechteckwelle in Theorie und Umfang und Simulation

Unten ist eine ideale Rechteckwelle im Zeitbereich und ihre harmonischen Komponenten in der Frequenz. Domain:

Geben Sie hier die Bildbeschreibung ein

Wie Sie oben sehen, besteht eine Rechteckwelle nur aus ihren ungeraden Harmonischen, da dazwischen keine Spitzen auftreten.

Und unten ist die FFT eines Oszilloskops einer Rechteckwelle:

Geben Sie hier die Bildbeschreibung ein

Hier sehen wir, dass zwei Dinge anders sind. Zunächst einmal besteht die obige FFT nicht aus Spitzen, sondern aus verbreiterten Kurven. Zweitens ist es kontinuierlich, nicht diskret.

Möglicherweise enthält das Oszilloskop Rauschen, und die Anstiegszeit der Rechteckwelle ungleich Null kann die FFT-Ergebnisse beeinflussen.

Schauen wir uns also anstelle des Oszilloskops an, was LTspice die FFT einer Rechteckwelle (in diesem Fall eine Impulsfolge) mit dem folgenden Setup anzeigt:

Geben Sie hier die Bildbeschreibung ein

Hier ist die FFT:

Geben Sie hier die Bildbeschreibung ein

Das sieht auch nicht gut aus. Also habe ich die Anstiegszeiten viel kürzer als die Standardeinstellung von LTspice wie folgt eingestellt:

Geben Sie hier die Bildbeschreibung ein

Jetzt wurde die FFT besser:

Geben Sie hier die Bildbeschreibung ein

Jetzt kann ich eines der Probleme sehen, wenn ich die FFT einer Rechteckwelle oder eines Impulses in einem Oszilloskop betrachte, wobei die Anstiegs- und Abfallzeiten niemals Null sind. Das andere Problem ist, dass es etwas Rauschen gibt.

Hier meine Frage:

Hier ist, was ich nicht verstehe. Am Anfang habe ich ein Spektrum einer idealen Rechteckwelle bereitgestellt, die diskrete ungerade Harmonische als Spitzen waren. Aber sowohl im Bereich als auch in LTspice ist die FFT kontinuierlich.

Ich bin an dieser Stelle verwirrt. Lassen Sie mich ein Beispiel geben. In meinem letzten Diagramm oben beträgt die Impulsfrequenz 100 Hz. Ich würde also erwarten, dass es aus seinen ungeraden harmonischen Sinuskurven von 300 Hz, 500 Hz, 700 Hz usw. besteht. Ich würde nicht erwarten, dass es beispielsweise eine 130-Hz-Komponente oder 102 Hz enthält. Tatsächlich gibt es gemäß dem letzten FFT-Diagramm eine Komponente bei 102 Hz und sie ist sogar größer als die 300-Hz-Komponente.

Irgendeine Idee, welche hier die Realität darstellt? Was weiß ich falsch?

1) Sie verwenden keine ganzzahlige Anzahl von Zyklen (wie in der Antwort unten angegeben) - ich wette, dies war auch beim Oszilloskop der Fall - und 2) wenn Sie auf das FFT-Fenster klicken in LTspice und verwenden Sie "Datenpunkte markieren", werden Sie sehen, dass es einen Punkt an der Spitze und zwei an der Unterseite gibt, was es zu einem sehr präzisen Bin im Frequenzbereich macht.
Was bedeutet in diesem Zusammenhang "ganzzahlige Anzahl von Zyklen"? Übrigens danke für die Option "Datenpunkte markieren", das ist wirklich großartig.
Um eine "realistischere" Ansicht des Ideals in ltspcie zu erhalten, müssen Sie kleinere Anstiegszeiten (1n oder so), die Option plotwisize = 0, mehr Samples (> 1 s) verwenden, die Glättung deaktivieren, eine geeignete Fensterfunktion verwenden und Erhöhen Sie die Anzahl der Proben, die beim Diebstahl verwendet werden
@ user16307 Ein Zyklus = eine Periode. Wenn Ihr Puls also seine Anstiegszeit bei t = 0 beginnt und f = 1 Hz hat, dann wäre eine ganze Zahl von 2 Zyklen bei t = 2 / f = 2 s, was zu einem 2-s-Fenster führt. Dies würde dazu führen, dass die niedrigste Frequenz 1/t = 1/2 = 0,5 Hz wäre. Wenn Sie die Anzahl der Samples erhöhen, erhalten Sie einen höheren Frequenzbereich, und wenn Sie auch die Anzahl der Perioden für das Signal erhöhen, verringern Sie die minimale FFT-Frequenz.

Antworten (2)

Willkommen in der realen Welt!

Die „mathematisch perfekte“ Transformation, die Sie oben zeigen, mit den „diskreten“ Harmonischen wird unter der Annahme generiert, dass die Anstiegs- und Abfallzeiten der Wellenform Null sind und dass Sie eine kontinuierliche Transformation durchführen – kein diskretes Sampling im Zeitbereich . Es wird davon ausgegangen, dass sich die Integrationen über eine unendliche Spanne erstrecken – oder äquivalent dazu, dass sie über eine exakte ganze Anzahl von Zyklen durchgeführt werden.

Wenn Sie eine Wellenform in einem Simulator erzeugen oder eine echte Wellenform in ein Oszilloskop einspeisen, gelten diese Annahmen nicht mehr. Die Anstiegs- und Abfallzeiten haben Werte ungleich Null, und das Signal wird im Zeitbereich abgetastet. Am wichtigsten ist, dass das Sampling normalerweise weder eine genaue Anzahl ganzer Zyklen umfasst noch genau mit der Wellenform synchronisiert ist.

Ein Verstoß gegen diese Annahmen führt dazu, dass sich die Spitzen, die Sie in der Transformationsausgabe sehen, "ausbreiten". Dies bedeutet nicht, dass beispielsweise bei 102 Hz Energie vorhanden ist, sondern nur, dass die Einschränkungen des Algorithmus dazu führen, dass er angesichts der Einschränkungen des Sample-Satzes, mit dem er arbeitet, nicht unterscheiden kann, ob dort Energie vorhanden ist oder nicht.

Wenn sich ein Neuling also das kontinuierliche FFT-Diagramm des Oszilloskops ansieht, könnte er denken, dass eine 102-Hz-Komponente vorhanden ist, die größer als die 300-Hz-Komponente ist. Aber er würde sich irren, da es an den Einschränkungen des Oszilloskops liegt. Habe ich verstanden, was du meinst?
Ja. Man muss sich immer der Grenzen seiner Instrumente bewusst sein.

Ich bin zugegebenermaßen in der relevanten Mathematik untererzogen und kann leicht durch einige elegante Formeln mit Transformationen, Operatoren, Funktionsmatrizen usw. gedemütigt werden, aber lassen Sie mich präsentieren, was ich im Laienvokabular weiß - vielleicht bin ich die richtige Person dafür versuchen, genau aus diesem Grund:

Ich würde vermuten, dass in Ihrer ersten "theoretischen" Skizze das "Balkendiagramm" genau zentrierte ideale harmonische Frequenzen zeigt. Sie sind ganzzahlige Vielfache der Hauptfrequenz Ihres Signals. Sie betrachten einfach kein kontinuierliches Spektrum zwischen den idealen Harmonischen :-) Und dann vergleichen Sie sie mit einem alternativen Frequenzbereichsdiagramm, das kontinuierlich ist .

Übrigens, in Ihrem ersten "Balkendiagramm" im Frequenzbereich scheint der Abstand von 0-1-3 seltsam zu sein :-) Und ich würde tatsächlich erwarten, dass die Hauptfrequenz die höchste Spitze auf der linken Seite ist und alle Harmonischen auf der linken Seite rechts davon sollte niedriger sein.

Als nächstes: Die diskrete Fourier-Transformation (von der FFT ein Sonderfall ist) hat einen wichtigen Parameter: die Fenstergröße. Dies ist die endliche Stapelgröße (eine Folge von Zeitbereichsabtastungen), über die Ihr "Mittelungsalgorithmus" integriert. DFT/FFT ist nur ein Karton voller gewichteter Mittelwerte :-) Ein Mittelwert pro interessierender Frequenz. Die Größe Ihres Sample-Stapels bestimmt also, bis zu welchem ​​Grad an Genauigkeit (oder statistischer Konfidenz/Sicherheit) Sie das Frequenzbereichsbild Ihres Originalsignals berechnen können. Je länger Ihr Fenster ist, desto schlanker werden Ihre Spektrallinien ausfallen. FFT ist eine Version von DFT, optimiert für Fenster der Größe 2^n.

Beachten Sie das folgende offensichtliche Paradoxon: Je schlanker (präziser) Sie Ihre Spektrallinien haben möchten, insbesondere bei relativ niedrigeren Frequenzen, desto länger müssen Sie das Zeitbereichssignal beobachten (= längeres "Fenster"). Was gleichzeitig bedeutet, dass die resultierende spektrale Änderung weniger "zeitlich fokussiert" ist :-) Ein bisschen wie ein "Unschärfeprinzip". Wenn zu einem bestimmten Zeitpunkt eine Änderung in Ihrem Zeitbereichssignal auftritt, die das resultierende Spektrum beeinflussen kann (z. B. Änderungen der Hauptfrequenz), dauert es länger, bis Sie dies bemerken, wenn Ihr DFT-„Fenster“ groß ist. Ein längeres Fenster bedeutet mehr Frequenzpräzision, aber auch eine langsamere Reaktion im Spektrumbereich.

BTW2: Beachten Sie, dass in Ihrem ersten "Balkendiagramm" im Frequenzbereich die Amplitude linear ist, während die Amplitude in Ihren späteren Diagrammen logarithmisch ist (dB-Einheiten). Dies zieht optisch die "Röcke" um Ihre "reinen" Spektrumslinien vom "Rauschhintergrund" nach oben - aber es ist wirklich nur ein optischer Nebeneffekt Ihrer Wahl der Skala (linear vs. logarithmisch). Probieren Sie es in jeder Spektrumanalysator-Software aus, die zwischen einer linearen und einer logarithmischen Skala umschalten kann. Daher erscheint auch das "Abklingen" von Obertönen zu höheren Frequenzen hin viel weniger steil (allmählicher, langsamer). Gleicher Effekt für logarithmische Frequenzskala. In Ihrem ersten Balkendiagramm ist die Frequenzskala linear (mit Ausnahme der 0-1-3-Anomalie). In den letztgenannten Spektraldiagrammen erscheint die Skala logarithmisch.

Bei meiner Arbeit habe ich ein USB-Scopey-Gadget (das M595 von ETC), das mit einer interessanten softwarebasierten Spektrumanalysator-App (nur gut als Übersichtsspektrograf) ausgestattet ist, die einstellbare Knöpfe hat, wodurch einige dieser Effekte sehr auffällig werden. Sie können den Vert optimieren. scale (lin/log), die Fenstergröße und die Abtastfrequenz (durch Größe und Verschiebung des Frequenzfensters entlang der Frequenzachse in der freq.domain-Anzeige). Sie können die Auswirkungen Ihrer Optimierungen in Ihrer menschlichen Echtzeit sehen :-) Ähnliche Effekte können in verschiedenen FFT-Softwares erzielt werden - es gibt eine Freeware-App namens SpectrumLab - kann mit einer Soundkarte oder einer WAV-Datei arbeiten, hat einen Wasserfallausgang usw. und ermöglicht Ihnen die Auswahl eines sehrgroße Auswahl an Windows-Größen. Ähnliche Effekte können beim "RTLSDR-Scanner" beobachtet werden: Sie können einen kompatiblen USB/DVB-T-Dongle verwenden, um das Funkspektrum zu scannen, und die Software ermöglicht Ihnen, die Fenstergröße und andere Parameter auszuwählen ... den Effekt des FFT-Fensters Größe ist wieder deutlich sichtbar.

Irgendwo zu Hause hatte ich immer eine Papierkopie eines alten Artikels: „More on Averages“ von „Jack W. Crenshaw“, der 1996 in der Zeitschrift „Embedded Systems Programming“ veröffentlicht wurde – ich erinnere mich, dass ich begann, das zu verstehen Grundlagen der FFT beim Lesen. Ich kann es jetzt nicht finden, aber vielleicht könnten Sie eine Kopie in einer Bibliothek oder so bekommen.

Stellen Sie sich vor, dass Sie für jede Frequenz, an der Sie interessiert sind (im Spektralbereich), eine präzise Sinuswelle dieser Frequenz nehmen und sie als "Gewicht" in einem gewichteten Durchschnitt über Ihr diskretes Abtastfenster im Zeitbereich verwenden. Das machst du für jede Frequenz, die dich interessiert. Vielleicht sollte es dir da anfangen zu dämmern. (Sie sollten dies eigentlich zweimal für jede Frequenz tun, indem Sie die Sinus- und Cosinus-Wellenform verwenden, was zu einer komplexen Amplitude für die jeweilige Frequenz führt = leicht in eine skalare Amplitude und einen Phasenwinkel umzuwandeln.)

Denken Sie an die gewichtete Mittelung Ihres Zeitbereichsfensters mit der Sinuswelle, an der Sie interessiert sind. Was passiert nun, wenn Ihr Fenster relativ klein ist, vielleicht in der Nähe einer einzelnen Periode der Frequenz, die Sie auswerten möchten? Oder ein kleines nicht ganzzahliges Vielfaches? Richtig - Unsicherheit / störende Artefakte am untersten Rand Ihres Spektrums. Je länger Ihr Fenster für eine bestimmte Frequenz ist, desto feiner ist Ihr Spektralbild. Je kürzer das Fenster, desto gröber das Spektralbild (besonders auffällig am unteren Ende, in logarithmischer Frequenzskala).

Abgesehen von der Fenstergröße gibt es einen verwandten Parameter namens "Fensteralgorithmus" (Triangular/Hanning/Blackman usw.) - so wie ich es verstehe, können Sie damit "allmählich verblasste Kanten" in Ihr Zeitbereichsfenster von Samples einfügen ( = noch eine weitere Ebene eines Filters / gewichteten Mittelwerts), mit der Sie einige grobe Artefakte am untersten Ende Ihres Spektralbilds unterdrücken können, die "nicht wirklich da sind", bevor Sie ein scharfkantiges Fenster anwenden.

Beachten Sie, dass der 0-1-3-Abstand ein Artefakt der Tatsache ist, dass das Signal einen DC-Offset hat. Die 0-Komponente stellt diesen Offset dar, die 1-Komponente ist die Grundwelle und die 3-Komponente ist die Harmonische beim 3-fachen der Grundwelle.