INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Analyse eines Rauschsignals via FFT



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

20.10.2010, 09:58
Beitrag #1

banman Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Oct 2010

2009
2010
de

53111
Deutschland
Analyse eines Rauschsignals via FFT
Guten Morgen zusammen,

Ich möchte gerne ein sog. Kundt´sches Rohr (Impedanzrohr) bauen und eine entsprechende Software mit Labview erstellen. Mit diesem Rohr kann man den Absorptionsgrad eines Prüfstückes ermitteln. Allgemein funktioniert ein solches Rohr folgendermaßen:

Ein Rohr der länge x ist an einer Seite geschlossen und an der anderen Seite ist ein Lautsprecher angebracht. An zwei Positionen im Rohr wird via eines Mikrofons der Druckunterschied zwischen der einen Position und der anderen Position gemessen. Dabei ist der Druckunterschied des einfallenden Signals (von LS zur Probe) an Mikrofonposition 1 und Mikrofonposition 2 und der Druckunterschied des reflektierten Signals (von Probe zu LS zurück) an den Mikropositionen zu ermitteln. Aus der Abnahme des Druckes kann ermittelt werden wieviel Energie dem Signal entzogen wurde und daraus folgt dann der Absorptionsgrad.

In der Theorie relativ einfach, aber in der Praxis stellen sich folgende Probleme:

1) um den Absorptionsgrad über ein Frequenzband zu bestimmen muss ein Rauschen genutzt werden, dass im interessanten Frequenzbereich ein stationeres Signal mit einer konstanten Sektraldichte besitzt.

2) Weder den Schalldruck des einfallenden noch des reflektierten Signals kann man messen, nur die Überlagerung beider kann man messen.


Zu 1) Stellt sich die Frage, was für ein Rauschen man da nehmen könnte (Ich weiß evtl off Topic, aber vielleicht weiß ja jemand eine Möglichkeit ein Rauschen mit konstanter Spektraldichte zu erzeugen)

Zu 2) Das Problem habe ich in soweit gelöst, dass wenn ich ein Rauschen bestimmter Amplitude in das Rohr hineinschicke, weiß ich theoretisch zu jeder Position des Mikros im Rohr den entsprechenden Druck (Amplitude). Und wenn ich das Rauschen über eine FFT auflöse, kenne ich auch die Amplitude jeder im Rauschen enthaltenden Frequenz an einer bestimmten Position (über die Wellenlänge lässt sich das rausfinden). Genauso kenne ich, durch Messung, die Amplitude jeder Frequenz des Überlagerten Rauschens. Über das Superpositionsprinzip (Amplitude ges. = Amplitude hin + Amplitude zurück) kann ich dann bestimmen wie die Amplitude jeder Frequenz des reflektierten Rauschens ist.

Lange Einführung ich weiß, aber ich wollte mal die Gesamtsituation beschreiben.

Nun zu meinem Problem:

Die im Rauschen vertretender Frequenzen kann ich über das Leistungsdichtespektrum einer FFT ermitteln, aber wie erhalte ich die Amplituden der einzelnen Frequenzen??
Ich habe es schon mal mit einem Sinussignal versucht und habe festgestellt, dass ich über die FFT nach Betrag und Phase nicht die Amplitude des Sinussignals angezeigt bekomme, bzw. der Betrag der FFT bleibt immer gleich, obwohl die Amplitude des Sinussignls sich ja mit jedem Abtastwert verändert?!
Ich habe auch schon ein VI gefunden indem mir die Amplitude des Eingangsignals angezeigt wird, aber leider nur über den gesammten Abtastzeitraum und nicht für jeden einzelnen Abtastwert. Zur Bestimmung der Amplituden an einer beliebigen Position des Mikros brauche ich aber für jeden Abtastwert die Amplituden.

Ich hoffe das war verständlich?! Ansonsten hier nochmal hier die ganz einfache Version: Ich möchte aus einem Überlagertem Signal (2 Sinussignale), wobei das Überlagerte Signal und ein Signal mit Amplitude und Frequenz bekannt sind, die Amplitude des zweiten Signals und zwar für jeden Abtastwert.

Vielen Dank schonmal für eure Hilfe

lG

P.S. die LabView Version it der ich arbeite ist die 2009 er.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.10.2010, 14:48
Beitrag #2

banman Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Oct 2010

2009
2010
de

53111
Deutschland
Analyse eines Rauschsignals via FFT
Alo ich hab schon mal ein Teilerfolgserlebnis: Ich habe es fast geschafft die Amplitude einer Schwingung an einem beliebigen Ort x zu bestimmen.

Folgendes hab ich dabei gemacht bzw. entdeckt:

Und zwar wird bei der FFT nach Betrag und Phase doch die richtige Amplitude ausgegeben, nur dass man diesen Wert noch mit Wurzel aus 2 multiplizieren muss, aber das ist ja eigentlich nichts Neues. So habe ich also für jede im Eingangsignal enthaltene Frequenz die entsprechende Amplitude. Diese hab ich dann den Frequenzen zugeordnet, indem ich die Anzahl der Samples in ein Array geschrieben habe und über das Zusammenführen mit den Amplituden, habe ich nun für jede Frequenz die entsprechende Amplitude.

D.h. ich habe nun die Frequenz und die maximale Amplitude jeder im Eingangssignal enthaltenden Schwingung und über die Beziehung

(Ort x / Wellenlänge) * maximale Amplitude = Amplitude am Ort x!

Dachte ich zumindest gestern.

Heute bin ich wieder ein bisschen schlauer und habe herausgefunden, dass obige Gleichung nur für die erste Vollschwinung gilt, also muss der Ort x innerhalb von der Wellenlänge der Schwingung liegen. Aber das ist ja nicht Sinn der Sache, weil erstens der Ort x auch weiter weg liegen können soll und zweitens ich viele Frequenzen habe. Also habe ich mir folgendes überlegt:
Wenn mein Ort x nun bei z.B. 24.76 Vollschwingungen einer bestimmten Wellenlänge liegt, interessiert mich ja eigentlich nur die Amplitude bei dem 0.76fachen Wellenlänge. Daraus folgt, dass ich eine Schleife brauche die prüft, ob der Ort x nun mehr als 1 Vollschwingung entfernt liegt und wenn ja von dem Wert 1 abzieht. Des Weiteren ist mir aufgefallen, dass die Amplitude gar nicht negativ wird, obwohl das wichtig ist, da bei einer Überlagerung eines Schwingungsmaximums und eines Schwinungsminimums gleicher Amplitude adiieren diese sich zu NULL auf (ich weiß gilt nur bei gleicher Frequenz, aber ich hoffe es ist klar was ich meine). So habe ich gleichzeit noch eine weitere Funktion eingebaut, die testet, ob der Ort x nun über dem 0,5 fachen der Wellenlänge liegt, oder nicht und wenn dem so ist soll der Wert negiert werden.

Dies klappt auch wunderbar für eine Frequenz, aber für mein Array aus Frequenzen und zugehörigen Amplituden klappt das nicht. Da ich die Überprüfung, ob der Ort x > 1 an eine Casestruktur gehangen habe, wird mir der Fehler genannt, dass meine Datenquelle ein Array aus Bool´schen Werten ist und meine Datensenke nur True oder False.

Also mein Problem momentan ist, dass ich für jede Frequenz und deren max. Amplitude prüfen möchte, ob der Ort x innerhalb einer Wellenlänge ist und wenn dies dann so ist (durch Abziehen von 1 bis der Wert < 1), ob der Wert größer 0,5 ist oder nicht. Wie kann ich das verwirklichen?


Hier ist mal ein Bild: Die Version mit der ich arbeite ist die 2009er

http://www.labviewforum.de/style_images/1/.../attach_add.png


P.S. in dem Bild fehlt die trigonometrische Ergänzung, sodass man wirklich auf die Amplitude kommt. Also es müssen noch die Beträge gebildet werden usw.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.10.2010, 07:12
Beitrag #3

banman Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Oct 2010

2009
2010
de

53111
Deutschland
Analyse eines Rauschsignals via FFT
hmmm... keine konstruktive Antwort?!

Vielleicht drücke ich mich auch einfach zu kompliziert aus.

Mein aktuelles Problem ist, dass ich ein Array mit 11000 Werten auslesen möchte und für jeden einzelnen Wert bestimmen möchte, ob dieser größer oder kleiner als 1 ist und im nächsten Schritt, ob dieser Wert größer als 0,5 ist oder nicht. Wie kriege ich das vernünftig gelöst?

Ich habe da was im Kopf, dass ich die Werte in ein Array von Bool´schen Werten übertrage, je nachdem ob größer 1 oder kleiner, aber ich weiß nicht genau, wie das geht...

Danke schon mal im vorraus.

lG und einen guten Start in die neue Arbeitswoche
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.10.2010, 08:16 (Dieser Beitrag wurde zuletzt bearbeitet: 25.10.2010 08:20 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Analyse eines Rauschsignals via FFT
Hallo banman,

Zitat:Ich habe da was im Kopf, dass ich die Werte in ein Array von Bool´schen Werten übertrage, je nachdem ob größer 1 oder kleiner, aber ich weiß nicht genau, wie das geht...
Genau das machst du doch schon in deinem VI/Bild... Du vergleichst ein Array mit 1 und bekommst ein boolsches Array mit den Vergleichsergebnissen. Du versuchst nur nicht richtig, dieses auszuwerten - man kann halt kein Array an einen CaseSelektor anschließen... (Evtl. würde für deine Aufgabe auch die InRangeAndCoerce-Funktion hilfreich sein.)

Wenn du jeden Wert des Arrays einzeln auswerten willst, könntest du eine ForLoop verwenden, die mit ihrem AutoIndexing gleich für die Einzelwertzugriffe sorgtSmile
   

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.10.2010, 08:55
Beitrag #5

banman Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Oct 2010

2009
2010
de

53111
Deutschland
Analyse eines Rauschsignals via FFT
Die ForLoop ist eine gute Idee, hab ich auch schon ausprobiert und funktioniert auch fast so, wie ich es möchte.

Nun hab eich noch das Problem, dass die Werte, die hinten rauskommen sollen (bei "Amplitude am Ort x) nur zum Teil richtig sind.

Bsp: Wenn ich eine Sinuswelle 1000x innerhalb einer Periode abtaste und mir die Amplitude anzeigen lasse, erwarte ich 250x ansteigende Werte bis zur maximal Amplitude, 250x sinkende Werte bis 0, 250x steigenden negative Werte bis maximal negativen Amplitude und 250x wieder ansteugend bis 0.

Das was ich aber angezeigt bekomme ist aber alles 0, nur bei den Frequenz der Sinuswelle bekomme ich die maximal Amplitude angezeigt und wie oben beschrieben ist das nict ganz Sinn der Sache.

Ist aus meinem oben angehangten Bild vielleicht schon ein Fehler zu erkennen,oder denke ich einfach falsch?

lG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.10.2010, 09:01 (Dieser Beitrag wurde zuletzt bearbeitet: 25.10.2010 09:02 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Analyse eines Rauschsignals via FFT
Hallo banman,

bei 1000 Samples pro Sinus erwarte ich 3 Nullwerte sowie 499 positive und 498 negative Werte (in etwa)... Oder auch: 499 mal positiver Anstieg und 499 mal negativer Anstieg sowie 2mal Anstieg=0. Ich sehe aber nirgends die Berechnung des Anstiegs - der ja der ersten Ableitung entspricht!

Zitat:Das was ich aber angezeigt bekomme ist aber alles 0, nur bei den Frequenz der Sinuswelle bekomme ich die maximal Amplitude angezeigt
??? Laut deinem Bild bekommst du noch gar nichts, weil das VI nicht lauffähig ist. Und wie du Frequenz und Amplitude vergleichen willst, ist mir auch schleierhaft. Wie wäre es mal mit einem richtigen VI (statt eines uralten Bildes), dann bräuchte man keineGlas1

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.10.2010, 09:14
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Analyse eines Rauschsignals via FFT
Klärung von Begriffen:

' schrieb:der Betrag der FFT bleibt immer gleich, obwohl die Amplitude des Sinussignls sich ja mit jedem Abtastwert verändert?!
Die Ampitude ist der Spitzenwert eines periodischen Signals, nicht zu verwechsln mit den zeitabhängigen Momentanwerten. Ein einzelner Abtastwert ist ein Momentanwert und nicht die Amülitude.

Zitat:D.h. ich habe nun die Frequenz und die maximale Amplitude jeder im Eingangssignal enthaltenden Schwingung und über die Beziehung
Zitat:Also mein Problem momentan ist, dass ich für jede Frequenz und deren max. Amplitude prüfen möchte
Die Amplitude ist der Maximalwert der Augenblickswerte. Trotzdem kann es sinnvoll sein, von "maximaler Amplitude" zu sprechen, z.B. bei einer amplitudenmodulierten Schwingung. Hier habe ich aber den Verdacht, daß der Ausdruck eher ein "weisser Schimmel" ist.

Zitat:dass die Amplitude gar nicht negativ wird
Die Amplitude ist im allgemeinen ein Betrag. Man kann natürlich bei Formeln wie Y=-1*sin(x) rein formal von einer "sinusförmigen Schwingung mit negativer Amplitude" sprechen, aber normalerweise vermeidet man das. Bei FFT gibt es jedenfalls keine negativen Ampituden, es gibt nur Phasen, die um 180° liegen können.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.10.2010, 10:10 (Dieser Beitrag wurde zuletzt bearbeitet: 25.10.2010 10:23 von banman.)
Beitrag #8

banman Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Oct 2010

2009
2010
de

53111
Deutschland
Analyse eines Rauschsignals via FFT
' schrieb:Und wie du Frequenz und Amplitude vergleichen willst, ist mir auch schleierhaft.
Ich möchte gar nicht die Frequenz mit einer Amplitude "vergleichen", sondern ich möchte aus einem Rauschen via FFT die beteiligten Frequenzen ermitteln und an einem bestimmten Ort x die momentane Auslenkung einer jeden im Rauschen enhaltenen Frequenz angezeigt bekommen. D.h. ich möchte eine Zuordnung von Frequenz und momentaner Auslenkung am Ort x.

Bsp.: am Ort 1,3m (von der Quelle des Rauschens aus gesehen) besitzt die Welle mit einer Frequenz von 200 Hz eine momentane Auslenkung von 0,3m und die Welle mit Frequenz von 500 Hz eine momentane Auslenkung von 0,132 m usw.

' schrieb:Klärung von Begriffen:
Die Ampitude ist der Spitzenwert eines periodischen Signals, nicht zu verwechsln mit den zeitabhängigen Momentanwerten. Ein einzelner Abtastwert ist ein Momentanwert und nicht die Amülitude.
Die Amplitude ist der Maximalwert der Augenblickswerte. Trotzdem kann es sinnvoll sein, von "maximaler Amplitude" zu sprechen, z.B. bei einer amplitudenmodulierten Schwingung. Hier habe ich aber den Verdacht, daß der Ausdruck eher ein "weisser Schimmel" ist.
Sorry da hab ich mich nicht klar genug ausgedrückt: Rolleyes

Mit "Amplitude" meinte ich momentane Auslenkung.
Mit "maximaler Amplitude" meinte ich die bei amplitudenmodulierten Schwinungen einstellbare Amplitude, also die maximale Auslenkung

' schrieb:Die Amplitude ist im allgemeinen ein Betrag. Man kann natürlich bei Formeln wie Y=-1*sin(x) rein formal von einer "sinusförmigen Schwingung mit negativer Amplitude" sprechen, aber normalerweise vermeidet man das. Bei FFT gibt es jedenfalls keine negativen Ampituden, es gibt nur Phasen, die um 180° liegen können.
Dass die Beträge einer FFT immer positv sind und nur die Phase Auskunft darüber gibt, ob die Auslenkung in positiver oder negativer Richtung der y-Achse liegt, ist mir bewusst. Der Betrag gibt aber doch einen Wert wieder, der nur noch mit Wurzel 2 multipliziert werden muss, um die momentane Auslenkung zu erhalten, oder? Hmm

Wenn das nämlich der Fall ist kann ich doch über die Wellenlänge und den Abstand von der Quelle sagen, ob der Wert innerhalb der "positiven" Halbwelle liegt oder innerhalb der "negativen" und dementsprechend, ob der Betrag in positive Richtung der y-Achse zeigt, oder in die negative. Oder habe ich die FFT nach Betrag und Phase falsch verstanden?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.11.2010, 16:24
Beitrag #9

banman Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Oct 2010

2009
2010
de

53111
Deutschland
Analyse eines Rauschsignals via FFT
So jetzt hab ich meinen Arbeits PC wieder.

ich kam leider selber auch nicht weiter, da ich nicht an den Rechner kam.

Ich hab mal das VI angehängt.

Um nochmal mein Problem zu schlidern:

Ich brauche an einem bestimmten Ort x in einem Rohr der Länge l die momentane Auslenkung jeder Welle, die in einem Rauschen vorhanden ist.

Hier ist das Beispeil mit zwei Sinussignalen dargestellt:


Sonstige .vi  fft_mit_amplitude_in_A_bh_ngikeit_von_der_Frequenz.vi (Größe: 32,38 KB / Downloads: 277)


Die Version mit der ich arbeit ist LV 2009

(sorry ich hab grad nicht das Kürzel für die LV Version gefunden)

Danke schon mal im voraus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.11.2010, 08:08 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2010 08:12 von Lucki.)
Beitrag #10

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Analyse eines Rauschsignals via FFT
' schrieb:Dass die Beträge einer FFT immer positv sind und nur die Phase Auskunft darüber gibt, ob die Auslenkung in positiver oder negativer Richtung der y-Achse liegt, ist mir bewusst. Der Betrag gibt aber doch einen Wert wieder, der nur noch mit Wurzel 2 multipliziert werden muss, um die momentane Auslenkung zu erhalten, oder? Hmm
Warum orakeln, wenn es zu FFT wie zu jeder anderen Funktion eine ausführliche Hilfe gibt? Dort steht:
   
Für das Kürzel eintippen: l v 0 9 (ohne die Leerzeichen)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Analyse Array ob Werte konstant grantiger 2 3.753 28.04.2016 22:06
Letzter Beitrag: Lucki
  Analyse von Daten LABVIEW_NEU 3 3.932 20.08.2009 09:10
Letzter Beitrag: A.Berndsen
  Time Series Analyse mit LabVIEW 8.2 of209 1 2.992 29.08.2008 06:23
Letzter Beitrag: A.Berndsen

Gehe zu: