LabVIEWForum.de
Fouriertransformation von Signalverlauf - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Signaldarstellung (/Forum-Signaldarstellung)
+---- Thema: Fouriertransformation von Signalverlauf (/Thread-Fouriertransformation-von-Signalverlauf)



Fouriertransformation von Signalverlauf - DavidStefan - 28.06.2021 10:05

Hallo,
In meinem momentanen Projekt muss eine erzeugte Funktion unter anderem Fourier-transformiert und anschließend dargestellt werden.
Damit man sich das nicht nur vorstellen muss, habe ich die entsprechende LabVIEW-Datei angehangen.
Der Graph oben Links stellt die erzeugte Funktion da, während er Graph direkt darunter sein Frequenzspektrum zeigen sollte.
Dies klappt bisher aber nur bei der Erzeugung eines "Raised-Cosine" -Impulses. Wenn ich einen Sinc()-Impuls erzeuge, bleibt der Graph für das Frequenzspektrum leer. Neben der momentanen Variante das Spektrum zu erzeugen, habe ich noch viele andere Varianten ausprobiert. Alle führen zu dem selben Ergebnis: Der Sinc()-Impuls bleibt ohne Frequenzspektrum.
Deshalb meine Frage: Übersehe ich etwas offensichtliches, was eine Umsetzung erschwert? Gehe ich die Erzeugung des Frequenzspektrum vllt. komplett Falsch an?
Eventuell hat ja jemand eine Idee und könnte mir weiter helfen Smile

Mit freundlichen Grüßen,
David


RE: Fouriertransformation von Signalverlauf - GerdW - 28.06.2021 10:37

Hallo David,

Zitat:Gehe ich die Erzeugung des Frequenzspektrum vllt. komplett Falsch an?
Nein.

Zitat:Wenn ich einen Sinc()-Impuls erzeuge, bleibt der Graph für das Frequenzspektrum leer. Neben der momentanen Variante das Spektrum zu erzeugen, habe ich noch viele andere Varianten ausprobiert. Alle führen zu dem selben Ergebnis: Der Sinc()-Impuls bleibt ohne Frequenzspektrum.
Deshalb meine Frage: Übersehe ich etwas offensichtliches, was eine Umsetzung erschwert?
Antwort: Ja!

Hast du mal etwas Debugging betrieben?
Meine Vorgehensweise sah so aus:
1. Gibt die FFT-Funktion einen Fehler aus? Nein, das macht sie nicht…
2. Gibt die FFT-Funktion "gültige" Daten aus? Ja, das macht sie! Dummerweise besteht dein FFT-Plot nur aus NaN-Werten! Warum wohl?
3. Enthalten deine "Sampledaten" evtl. ungültige Werte (aka NaN)? Ja! Dummerweise ist wohl deine Sinc-Berechnung irgendwo fehlerhaft!
4. Wo genau wird wohl eine Funktion der Form "sin(x)/x" fehlerhaft sein? Könnte das evtl. bei x=0 zu undefinierten Resultaten führen?
5. Hast du diesen Fehlerfall abgefangen? Nein…

Schau mal hier:
[attachment=61991]
Achte auf den zusätzlichen Array-Indicator nur fürs Debugging!

Beachte bittte auch die anderen subtilen Änderungen:
- Warum 3 Cases in einer Case-Struktur, die alle 3 exakt das gleiche machen (abgesehen von der vorher berechneten numerischen Konstante)?
- Numerische Werte mit "sehr vielen Nullen" sollte man im SI-Format anzeigen lassen: der Wert ist viel einfacher erfassbar (und weniger fehleranfällig)…
- Warum ein ExpressVI für die FFT, wenn es auch "normale" gibt?


RE: Fouriertransformation von Signalverlauf - DavidStefan - 28.06.2021 10:57

Hallo,
Vielen Dank für die schnelle und gute Antwort.
Ich habe zwar ein bisschen in Debugging versucht, aber ich habe einfach nicht daran gedacht, dass ein NaN-Wert die FFT-Berechnung durcheinander bringt.

Ich mache es jetzt so, dass der entsprechende Wert bei jeder Erzeugung durch den Wert der Amplitude ersetzt wird. Das sollte vond er Genauigkeit her für meine Zwecke ausreichen.
Dankeschön Smile