LabVIEWForum.de - Amplituden im Amplitudenspektrum

LabVIEWForum.de

Normale Version: Amplituden im Amplitudenspektrum
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich führe Rauschmessungen durch und möchte dazu mit LabVIEW ein möglichst genaues Amplitudenspektrum aus einer aufgenommenen Zeitreihe berechnen.
Um das Programm zu überprüfen, habe ich eine Zeitreihe (mit N samples und dt als schrittweite für die Zeit)

y = A * Sin(w * t)

erzeugt und lasse die durch die LV-FFT-Routine laufen und erhalte F(y). Dann multipliziere ich das Array F(y) mit seinem konjugiert komplexen, multipliziere mit dt / n^2 und ziehe aus dem so erhaltenen Array die Wurzel. Jetzt hat leider die Amplitude, die ich bei der korrekten Frequenz w bekomme nicht wirklich etwas mit A zu tun. Das vorgefertigte VI "Amplitude and Phase Spectrum VI" macht es (nach einer Multiplikation mit Sqrt(2)) zwar
etwas besser, aber immer noch mit einem Fehler von ca. 5 % in der Amplitude. Da hätte ich irgendwie etwas besseres erwartet...

Ein Test des Parseval-Theorems hat gezeit, dass die Energie im Signal vor und nach der FFT das gleiche ist. Daher wird die FFT bei LV nicht komisch normiert oder so...

Ich stehe vor einem Rätsel. Weiß jemand den Fehler? Hat irgendjemand von Euch (ähnliche) Erfahrungen mit der FFT bei LV?

Danke schonmal für Eure Hilfe!
Kannst du dein VI hochladen? Damit man nicht alles (mglw. sogar falsch) nachprogrammieren muss, um dein Problem genauer zu analysieren.

Gruß, Jens
Wahrscheinlich hast Du das normale Fourier-VI benutzt. Das ist für praktische Zwecke so gut wie unbrauchbar. Man hat dort, was rein mathematisch richtig, aber physikalisch unsinnig ist, auch Amplitudenkomponenten bei negativen Frequenzen. Da es aber in LV keine Arrays mit negativen Indizees gibt, werden diese Frequenzen im Array hilfsweise in einem Bereich oberhalb der Nyquist-Frequenz abgebildet. Das ist alles recht unübersichtlich. Der Sinn diese Vis ist in erster Hinsicht, intern als Basis-SubVI in den nachfolgend von mir empfohlenen VIs verwendet zu werden.

Die Fourierfunktionen unter Signalverarbeitung/Signalverlaufsmessungen sind unendlich viel komfortabler, ich benutze grundsätzlich nur diese. Die kleine Mühe, einen 1D-Zeitverlauf gegebenenfalls in eine Waveform konvertieren zu müssen, lohnt sich auf jeden Fall. Man erhält mit diesen VIs genau die Ergebnisse wie man sie erwartet.
Beispiel:
[attachment=24974]
Hallo nochmal!

Ich habe ein bischen an der Normierung gearbeitet, so dass jetzt das ganze etwas besser aussieht, aber ich habe immer noch einen "Fehler" von 5-10%. Ich weiß, dass da nie die
reingesteckte Amplitude rauskommen wird, da sich die spektrale Leistung auf mehrere Frequenzbins verteilt. Aber mit einer Zahl von
10^6 Stützstellen hätte ich einfach ein näheres Ergebnis erwartet.

Das VI aus der Signalverarbeitung habe ich auch mal getestet, das liefert ähnliche Werte und
im Hintergrund werden die gleichen VI's benutzt und die Daten auch auf ähnliche Weise bearbeitet, wie ich das gemacht habe.
Vielleicht muss ich mich einfach mit dem bisherigen Ergebnis zufrieden geben. Ich werde mal morgen einen Vergleich mit TurboLab (das ist bisher bei unserem Institut
das Programm der Wahl) machen... mal sehen welches Programm das besser macht.

Das angehängte VI ist leider kein Minimalbeispiel und enthält noch verschiedene (überflüssige) Experimente und Tests wie das Parseval-Theorem. Ich hoffe
es ist trotzdem verständlich...

Meine LV-Version ist LV 2009 (bzw. 9), aber es werden nur ganz normale VI's benutzt.
Referenz-URLs