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 

FFT - Phase



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!

22.03.2007, 13:18
Beitrag #1

Grobi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 220
Registriert seit: Jan 2007

2013
2006
kA

26725
Deutschland
FFT - Phase
Hallihallo..

Heute wieder mal was neues von mir.
Ich hatte ja schon ein paar Themen in den letzten tagen gestartet mit diversen Problemen.

Heute wieder mal was neues...

Also es geht um folgendes, was ich mit einem testprogramm beschreiben möchte.

Ich erstelle in LabVIEW ein Signal bestehend aus 2 Sinussignalen mit den Frequenzen 100 und 200 Hz. Beide erhalten die gleiche
Amplitude.
Nun stelle ich bei beiden die gleiche Phasenverschiebung von 100° ein.

Siehe Bild 1:
Hier ist jetzt zu sehen, dass mir bei der Phase beim 1. Signal auf 100 Hz der gleiche Wert angezeigt wird wir beim 2. Signal bei 200Hz.
Im zusammengesetzten SIgnal 3 wird mir dann bei 200 und 100 Hz auch dieser Wert angezeigt.
Das heisst für mich, es steckt also eine Phaseninformation drin....

Bild2:
Hier nochmal das gleiche mit einer Phasenverschiebung von 10°

Zu meiner Problemstellung:

Ich möchte 1 Referenzsignal haben. Z.B. ein 50Hz Sinussignal.
Jetzt habe ich ein 2. Signal in dem unterschiedliche Frequenzen vorhanden sind. Z.B. 50,100,150,500Hz.
Von diesen Frequenzen möchte ich die Phasenlage jeder einzelnen bestimmen und auf mein referenzsignal beziehen.
Jetzt habe ich mir gedacht, da es den FFT Baustein gibt mit dem Anschluss "Phase". Kann ich die einzelnen Phasen der versch.
Frequenzen dort herausfinden.
Aber entweder ist da meine Denkweise oder Vorgehensweise falsch.

Von daher meine Frage. Das was mir dort als Phase angezeigt wird, wie habe ich das zu deuten?
Ich dachte eigentlich dort wird bei einem reinen Sinussignal ein fester Wert angezeigt, allerdings ergibt sich ja
ein regelrechter nicht zu deutender Phasenverlauf.

ANbei noch mein TestVI was mit meiner ursprünglichen Aufgabe zwar nichts zu tun hat,
aber mein problem ganz gut beschreibt.

mfG
ein verzweifelnder Robert...


Angehängte Datei(en) Thumbnail(s)
       

Sonstige .vi  Unbenannt.vi (Größe: 109,47 KB / Downloads: 189)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.03.2007, 21:56
Beitrag #2

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
FFT - Phase
Die Verzweiflung ist nachvollziebar, denn Phasenverschiebung im Sinne einer Konstanten ist nur bei 2 Signalen gleicher Frequenz definierbar, nicht aber zwischen einem 100Hz und einem 200Hz-Signal. Du jagst also einem Phantom hinterher, welches es gar nicht gibt..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2007, 22:02
Beitrag #3

dc6xs Offline
registered alien
****


Beiträge: 762
Registriert seit: Aug 2006

6.1,7.00
2006
kA

79106
Sonstige
FFT - Phase
' schrieb:Die Verzweiflung ist nachvollziebar, denn Phasenverschiebung im Sinne einer Konstanten ist nur bei 2 Signalen gleicher Frequenz definierbar, nicht aber zwischen einem 100Hz und einem 200Hz-Signal. Du jagst also einem Phantom hinterher, welches es gar nicht gibt..

Genau, sonst würden ja auch die hübschen Lissajou-Figuren auch nicht funktionieren.

Gruß, Rob

Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.

N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.03.2007, 08:33 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2007 08:46 von Grobi.)
Beitrag #4

Grobi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 220
Registriert seit: Jan 2007

2013
2006
kA

26725
Deutschland
FFT - Phase
Hmm ich weiß nicht ob mein Problem richtig angekommen ist.
Der FFT Baustein gibt ja Betrag und Phase zurück. Die Beträge die ausgegeben werden, liegen ja halt genau bei den
zugehörigen Frequenzen und werden dort als Ausschlag in Form eines Striches angegeben.

Ich möchte aus dem FFT Ausgang Phase nicht direkt eine Phasenverschiebung ablesen, sondern z.B.
auch einen Ausschlag sehen..

100Hz, Phase 3,14 (in rad halt)
200 Hz Phase 1,22

Hier mal ganz "professionell :rolleyes:mit Paint reingemalt...

Normalerweise gibt doch eine FFT den Betrag mit zugehöriger Phase aus. wie ich das Ergebnis nachher weiterverarbeite ist dann ja
etwas anderes, aber dieser "kröselige" Verlauf der da angezeigt wird ist doch vollkommener Blödsinn wenn ich wirklich nur
ein einziges Signal von 100 Hz dort habe oder seh ich das verkehrt...

Als neuen Test einfach nur 1 VI in dem wirklich nur dieses eine Signal dargestellt wird..

Nochmal zur Frage, wenn ich wie hier 180° eingestellt habe, wird mir bei 100 Hz im Phasendiagramm 1,57 angezeigt was Pi/2 entspricht..
Warum sehe ich jetzt im Diagramm nicht nur! den einen dicken roten balken den ich da von Hand reingemalt habe, sondern irgendetwas nicht deutbares
was mich garnicht interessiert.
Vielleicht wird das Problem so etwas deutlicher.



Zu euren Antworten folgendes:
Das mit der Phasenverschiebung was ich vorhabe soll etwas anders laufen. Ich möchte den Nulldurchgang eines Referenzsignales bestimmen,
und dann über die angezeigten Phasen der anderen Frequenzen die Zeit bestimmen die zwischen den Nulldurchgängen liegt..
Bsp.
Ein Signal hat 50,100,150Hz Komponenten. Aus den angezeigten Phase erhalte ich jeweils, 1 2 2,7 als Werte
Da ich die Frequenzen mit den einzelnen Phasen jetzt weiß, möchte ich die Verschiebung der Nulldurchgänge untereinander bestimmen.
Aber! dafür muss ich erstmal wissen, was das ist was die FFT dort als Phase anzeigt..
Ich habe dies Forum echt schon dürchwühlt und auch im NI Forum keinen vernünftigen Beitrag dazu gefunden, was die Angabe der Phase wirklich
beschreibt..
Aber ignoriert das was ich vorhabe, da weiß ich selber noch net genau wie oder ob das überhaupt geht. Das Problem ist das Grundlegende der angezeigten Phase.


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  phase1.vi (Größe: 79,95 KB / Downloads: 199)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.03.2007, 09:44 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2007 09:53 von Lucki.)
Beitrag #5

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
FFT - Phase
Ja, da weiß man schon eher was Du meinst.
An den Diagrammen ist alles in Ordnung, alles ist normal. Trotzdem Du einen reinen Sinus von 10Hz eingegeben hast, besteht das Amplitudenspekrum nicht nur aus dieser einen Spektrallinie. Das sieht man in der logarithmischen Darstellung:
   
Ich nehme an, das hängt mit Digitalisierungsfehlern zusammen, gegen die man nichts machen kann. Die Phase berechnet sich zu
Phase = -arctan(Sinusamplitude/Cosinusamplitude).
Bei 10Hz kommt der Werte -Pi/2 richtig heraus, bei den anderen Frequenzen entsteht irgendein zufälliger Wert durch der Division von 2 Werten der Größenordnung 10^-18.

Dagegen kannst Du nur mit Nachbearbeitung der Arrays etwas machen. Z.B so, daß, wenn ein Amplitudenwert unterhalb einer Schranke liegt, der Phasenwert, weil uninteressant und weil er sich auf etwas quasi nicht Existierendes bezieht, nicht mehr dargestellt wird.

Tip(hat nichts mit dem Problem zu tun):
Als Samplezahl immer 2^n Werte verwenden, sonst kann die schnelle FFT nicht angewendet werden (z.B in Deinem Beipiel fs=1024 Hz und #s=1024).

Gruß Ludwig
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.03.2007, 10:00
Beitrag #6

Grobi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 220
Registriert seit: Jan 2007

2013
2006
kA

26725
Deutschland
FFT - Phase
Zitat:Dagegen kannst Du nur mit Nachbearbeitung der Arrays etwas machen. Z.B so, daß, wenn ein Amplitudenwert unterhalb einer Schranke liegt, der Phasenwert, weil uninteressant, nicht mehr dargestellt wird.

Das klingt schonmal irgendwie logisch.. An die Log.-Darstellung habe ich garnicht gedacht.

Allerdings weiß ich nicht ganz wie ich deinen Lösungsvorschlag umsetzen soll...

Ich erhalte ja jeweils ein Cluster der Amplitude und ein Cluster der Phase als Ausgang der FFT.

In diesen steht jeweils df unf f0 sowie einmal die Amplitude und bei dem andern halt die Phase...
Ich bin jetzt nicht so der Crack in Sachen Arrays.
Wie kann ich denn beim Amplituden Array z.B. alle Indizes der Werte < 10^-5 beispielsweise herausfinden und diese dann aus dem
anderen Phasenarray die zugehörigen Stellen entfernen?

Aber tausend Dank schonmal, dann habe ich die FFT grundsätzlich ja richtig gesehen, aber dass da noch irgendwelcher anderer Mist drinsteht...
Naja darauf muss man erstmal kommen.

Vielleicht hilft mir jetzt noch jemand bei der Arraysache und ich kann beruhigt ins Wochenende gehen..

*SchweißvonderStrinwisch :closedeyes:
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.03.2007, 10:27 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2007 10:55 von Grobi.)
Beitrag #7

Grobi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 220
Registriert seit: Jan 2007

2013
2006
kA

26725
Deutschland
FFT - Phase
Zur problemverdeutlichung nochmal ein Beispiel von mir:

Cluster 1: Amplitude
aufgesplittet erhalte ich ein Array der Amplitudenwerte:

1. 5
2. 0,000007
3. 0,000007
4. 0,000007
5. 0,000007
6. 0,000007
7. 0,000007
8. 4
9. 0,000007
10. 0,000007

Cluster 2: Phase
aufgesplittet erhalte ich ein Array der Phasenwerte:

1. Pi
2. Müll
3. Müll
4. Müll
5. Müll
6. Müll
7. Müll
8. Pi/2
9. Müll
10. Müll


Wie krieg ich das jetzt aussorrtiert, so das aus dem Amplitudenarray
alle Werte kleiner 0,05 entfernt werden und ich dann die Indizes auch aus dem andern Array entfernen kann
um nur noch die Interessanten überzubehalten..

Habe Schwellwert getestet, geht aber ja nur wenn der vorherige Wert kleiner und der darauffolgende größer ist.
Bräuchte also eine Funktion die mir alle Indizes der Werte >3 oder so angibt und dann eine wo ich aus dem andern alle diese Indizes entfernt werden.

Max/Min kann ich ja net anwenden würd ja nur einen Wert finden..


edit:
habe mir dies Topic angeschaut:
http://www.LabVIEWforum.de/index.php...array&st=20

Aber da gehen wir dann leider die Informationen verloren wo die gültigen Elemente vorher gestanden haben.
Sprich, ich kannzwar Werte größer 0 finden, aber die werden dann hintereinander in ein neues Array geschrieben und die Information ob
dieser Wert bei 100, 500 oder 1kHz war geht verloren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.03.2007, 11:11 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2007 11:15 von Lucki.)
Beitrag #8

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
FFT - Phase
' schrieb:Allerdings weiß ich nicht ganz wie ich deinen Lösungsvorschlag umsetzen soll...
s. Anhang
Zitat:Sprich, ich kannzwar Werte größer 0 finden, aber die werden dann hintereinander in ein neues Array geschrieben und die Information ob
Die Lösung ist: X-Y Diag verwenden, s. Anhang


Angehängte Datei(en)
Sonstige .vi  phase1_WA.vi (Größe: 28,88 KB / Downloads: 212)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.03.2007, 12:22
Beitrag #9

Grobi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 220
Registriert seit: Jan 2007

2013
2006
kA

26725
Deutschland
FFT - Phase
Hmm jo habs doch anders hinbekommen.

Einfach alle Werte <0,1 mit 0 beschrieben, Rest so gelassen.

Besten Dank für die ganze Hilfe.

So sieht das ganze nu aus, links das Alte, rechts das Bereinigte, ohne die 10^-16 Werte :closedeyes:


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.03.2007, 12:56 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2007 13:13 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
FFT - Phase
Eine andere Möglichkeit wäre, die ungültigen Werte anstatt mit 0 mit "NaN" zu beschreiben, dann sieht man sie überhaupt nicht mehr.
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Phase messen und in array schreiben Juliana90 3 3.369 01.02.2013 15:18
Letzter Beitrag: Lucki
  Phase - Bezug? Grobi 7 6.195 25.04.2007 08:57
Letzter Beitrag: Grobi

Gehe zu: