LabVIEWForum.de
FFT - Analyse & Filterung von Signalen durch Änderung der FFT-Koeffizienten? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Signaldarstellung (/Forum-Signaldarstellung)
+---- Thema: FFT - Analyse & Filterung von Signalen durch Änderung der FFT-Koeffizienten? (/Thread-FFT-Analyse-Filterung-von-Signalen-durch-Aenderung-der-FFT-Koeffizienten)



FFT - Analyse & Filterung von Signalen durch Änderung der FFT-Koeffizienten? - BeFu - 19.03.2007 20:41

Hallo Allerseits,

die Analyse / Filterung von Signalen soll im Frequenzbereich passieren, da hier unter anderem die gezielte Filterung von bestimmten - im Signal enthaltenen - Frequenzen möglich ist.
In beigefügtem Projekt "Sinus FFT" erzeuge ich mit LabVIEW Signalgeneratoren ein mit Rauschen überlagerbares Summensignal verschiedener Frequenzen. Dieses Signal transformiere ich dann mit FFT.vi in den Frequenzbereich. Da LabVIEW eine zweiseitige Fouriertransformation durchführt sind die Amplituden im Frequenzbereich spiegelbildlich angeordnet und haben bis auf den Gleichanteil den halben Wert. Zur Anzeige im Graph (Frequenzbereich) bringe ich nur eine Hälfte der Fouriertransformation, mit den richtig berechneten Amplitudenwerten. Soweit so gut.Smile
Nun habe ich das Problem, dass ich im Frequenzgraphen zwar die Amplituden der im Summensignal enthaltenen Frequenzen sehe, diese jedoch nicht z.B. in einem Array "archievieren" und als Paar Frequenz / Amplitudenwert ausgeben bzw. weiterbearbeiten kann. Das Ganze soll dann online passieren bei einer maxmimale Signalfrequenz von ca. 5kHz.
Toll wäre wenn Ihr Ergänzungen in "Sinus FFT" vornehmen könnt, damit folgendes möglich ist (Ich komme da einfach nich weiter):
- wie ist es möglich, dass ich sowohl im Zeit- wie auch im Frequenzbereich die x-Achsen des jeweiligen Graphen so skaliere, dass dieser genau eine Periode des Signal mit der minimalen Freqenz zeigt. Die höherfrequenten Signale zeigen dann eben mehrere Schwingungen. Bis jezt "klebt" z.B. das Frequenzspektrum immer am linken Rand, da ich's nur schaffe die maximal am Frequenzgraphen dargestellte Frequnez mit Fs / #s (der Frequenzauflösung) zu bestimmen.
- eben dazu müsste LabVIEW selbst die im Fourierspektrum enthaltenen Frequenzen bestimmen, deren Amplituden z.B. über einem bestimmten Schwellwert liegen. Beim später mittels Hardware eingelesenem Signal kennt ja LabVIEW die darin enthaltenen Frequenzen auch nicht.
- durch Erhöhung oder Erniedrigung der Koeffizienten der so von LabVIEW gefundenen und gezeigten Frequenzen kann das Signal dann gezielt beeinflusst werden.
- Das manipulierte Signal soll dann wieder zurück in den Zeitbereich transformiert werden.

Danke für Eure Hilfe. - Mit großem Interesse sehe ich Euren Vorschlägen entgegen.

Schöne Grüße

BeFu


FFT - Analyse & Filterung von Signalen durch Änderung der FFT-Koeffizienten? - dc6xs - 19.03.2007 22:02

Hallo BeFu,

erstmal ist es schade das Du keinen Screenshot für die Leute mit LV <8.0 angehängt hast.

Bedenke bitte das Du bei einer Periodischen Abtastung den Teil der links der 0, den Du "ausblendest" eigentlich auch rechts im Bereich f_sample/2 bis f-samle wiederfindest.
Wenn mich mein Kopf jetzt nicht ganz in Stich lässt ist das Filtern durch Weglassen von Koeffizienzen bei der inversen FFT aber nicht ganz ohne, da wird Dir Herr Gibbs (->Gibbssches_Phänomen) ein bisschen dazwischen funken.

Die Berechnung der Frequenzen aus der normierten Frequenz sollte mit etwas Gehirnschmalz locker hinzubekommen sein.
Genau so die Schwellenwerterkennung für die einzelnen Peaks.
Für die Filterung der Einzelkomponenten ist wirklich ein Array mit Frequenz und Amplituden, wo man dann einfach eine Rechteckfunktion "rüberlegt", das einfachste . D.h. nur im gewünschten Bereich orginal lassen (=*1) und die restlichen Werte auf 0 setzt.

<modus=Glaskugel V.0.01 prealpha>Cool
Was soll es denn werden?
Modell eines Frequenzselektiven Kanals?
Modell einer OFDM-Übertragung? (Wobei da noch bissl was fehlt)
</modus>

Gruß, Rob