Phasenverschiebung bei FFT < Fourier-Transformati < Transformationen < Analysis < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:33 Fr 11.02.2011 | Autor: | hacke78 |
Hallo
Ich habe folgendes Problem :
Ich habe eine periodische Zeitreihe und möchte diese mit den Hauptschwingungen einer FFT approximieren. Es geht mir darum die Parameter a,b,c,d von y = a* sin(b*x+c) + d aus einer FFT zu bestimmen.
Leider bin ich damit an der Uni bisher nie in Kontakt gekommen und mein Wissen ist sehr rudimentär. Ich nutze hierfür das Statistikprogramm R. Das die
Amplitude a in Magnitude = sqrt(im² +re²) steckt habe ich mittlerweile herausgefunden. Die Frequenz b liegt ja wenn ich mir das i-te Element anschaue auch quasi im i, den Faktor d kann ich auch aus dem ersten Element bestimmen. Was mir Probleme bereitet ist die Phasenverschiebung.
Meine Recherche hat ergeben das sich die Phase aus Phase = atan2(im, re) berechnet. Nur finde ich keine Aussagekraft in diesem Wert.
Leider bin ich kein Mathematiker sondern nur ein Anwender aus der Geowissenschaft und deswegen fällt mir das Thema sehr schwer.
Die Zeitreihe, die ich untersuche hat 480 Punkte ( Stundenwerte von 20 Tagen ) und eine Periodizität von genau 24.
Der höchste Peak bei der Magnitude liegt dementsprechend im 21. Element bei einem Wert von 77.9806. Die Phase ist vom 21. Element dann 0.52267.
Daraus ergibt sich für mich soweit :
y2 <- (77.9806/240)*sin((2*pi*x+c)/24)
Mittlels nichtlinearer Regression komme ich auch auf einen c Wert von 43.96.
Die Kurve passt dann auch im Plot perfekt, aber ich würde gerne ohne die Regression auf diesen Wert kommen.
Um es auf den Punkt zu bringen, kann mir einer in einfachen Worten erklären, wie ich bei einer Sinusschwingung der Frequenz 24 von dem Phasenwert 0.522 auf meinen c Wert von 43.96 komme?
Ich wäre für eine Hilfe dankbar.
Jan
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:04 Sa 12.02.2011 | Autor: | Calli |
> Hallo
> Ich habe folgendes Problem :
> Ich habe eine periodische Zeitreihe und möchte diese mit
> den Hauptschwingungen einer FFT approximieren. Es geht mir
> darum die Parameter a,b,c,d von y = a* sin(b*x+c) + d aus
> einer FFT zu bestimmen.
Wegen periodische 'Zeitreihe' = periodische Zeitfunktion würde der Ansatz besser so geschrieben:
[mm] $y_{i}(t)=A_{i}*\sin (2\pi f_{i} *t+\varphi_{i})+y_{0}$
[/mm]
$ mit [mm] \;f=Frequenz,\quad t=Zeit,\quad\varphi=Nullphasenwinkel \quad [/mm] und [mm] \quad y_{0}=Gleichanteil$
[/mm]
> Leider bin ich damit an der Uni bisher nie in Kontakt
> gekommen und mein Wissen ist sehr rudimentär. Ich nutze
> hierfür das Statistikprogramm R. Das die
> Amplitude a in Magnitude = sqrt(im² +re²) steckt habe ich
> mittlerweile herausgefunden. Die Frequenz b liegt ja wenn
> ich mir das i-te Element anschaue auch quasi im i, den
> Faktor d kann ich auch aus dem ersten Element bestimmen.
'd' ist kein Faktor sondern ein Summand und steht für den Gleichanteil (f = 0).
> Was mir Probleme bereitet ist die Phasenverschiebung.
> Meine Recherche hat ergeben das sich die Phase aus Phase =
> atan2(im, re) berechnet. Nur finde ich keine Aussagekraft
> in diesem Wert.
Wenn Dir die Phase über der Frequenz angegeben wird, so hast Du schon die Nullphasenwinkel.
> Leider bin ich kein Mathematiker sondern nur ein Anwender
> aus der Geowissenschaft und deswegen fällt mir das Thema
> sehr schwer.
> Die Zeitreihe, die ich untersuche hat 480 Punkte (
> Stundenwerte von 20 Tagen ) und eine Periodizität von
> genau 24.
> Der höchste Peak bei der Magnitude liegt dementsprechend
> im 21. Element bei einem Wert von 77.9806. Die Phase ist
> vom 21. Element dann 0.52267.
> Daraus ergibt sich für mich soweit :
> y2 <- (77.9806/240)*sin((2*pi*x+c)/24)
> Mittlels nichtlinearer Regression komme ich auch auf einen
> c Wert von 43.96.
> Die Kurve passt dann auch im Plot perfekt, aber ich würde
> gerne ohne die Regression auf diesen Wert kommen.
> Um es auf den Punkt zu bringen, kann mir einer in einfachen
> Worten erklären, wie ich bei einer Sinusschwingung der
> Frequenz 24 von dem Phasenwert 0.522 auf meinen c Wert von
> 43.96 komme?
Was soll '43.96' sein ? Den Nullphasenwinkel (im Bogenmasz) hast Du ja !
Ciao Calli
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 14:19 Sa 19.02.2011 | Autor: | hacke78 |
Ja
den Winkel im Bogenmass sollte ich haben. Diesen möchte ich mir halt umrechnen, um die Zeitreihe zu plotten. Ich nutze nun
$ [mm] y_{i}(t)=A_{i}\cdot{}\sin (2\pi f_{i} \cdot{}t+\varphi_{i})+y_{0} [/mm] $
Also sollte mein gesuchte Zahl
[mm] $\varphi_{i} [/mm] = Phase * [mm] f_{i} [/mm] / [mm] 2\pi$
[/mm]
sein. Phase ist halt die erhaltene Zahl aus der Atan2 Funktion.
Und genau hier liegt mein Problem, wenn ich das so ausrechne, dann erhalte ich Zahlen, die wenn ich die Fkt. dann plotte einfach nicht passen. Mittels Nonlinearer Regression erhalte ich hingegen gute Zahlenwerte.
Da sich meine Zeitreihe mittlerweile ein wenig verändert hat, hier noch einmal ein neues Beispiel :
Für die Sinusfunktion mit der größten Amplitude erhalte ich :
[mm] f_{i} [/mm] = 24
Phase = 0.5387474
Also :
[mm] $\varphi_{i} [/mm] = 0.5387474* 24 / [mm] 2\pi [/mm] = 2.05786$
Die Regression hingegen liefert :
7.058
Für meine 2. und 3. größte Amplitude ( Frequenz 12 und 8) erhalte ich dann
[mm] $\varphi_{i} [/mm] = 2.55486*12 / [mm] 2\pi [/mm] = 4.879423$
Regression ist 6.879
und
[mm] $\varphi_{i} [/mm] = 2.55486*8 / [mm] 2\pi [/mm] = 2.649339$
Regression ergibt 3.649
Die Regressionwerte sind alle die "richtigen".
Man beachte ( bis auf Rundung ) unterscheiden sich beide Werte um genau 5,2 und 1. Aber dadurch werde ich auch nicht schlauer.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:32 Sa 19.02.2011 | Autor: | Infinit |
Hallo hacke78,
aus der Fouriertransformation ergibt sich der Phasenwinkel aus dem Arcustangens von Imaginär- zu Realteil. Welchen Bezugspunkt hier Deine Regression ansetzt, das wissen wir nicht und insofern kann man schlecht was vergleichen. Die Darstellung eines Phasenwinkels von größer 2 Pi wie bei Deinem zweit- und drittgrößten Winkel ist zwar mathematisch möglich, aber doch sehr ungewöhnlich.
Viele Grüße,
Infinit
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:07 Sa 19.02.2011 | Autor: | hacke78 |
Hallo
ich bin nun selbst etwas schlauer.
Da ich eigentlich keine Zeitachse habe, sondern nur Indizes meiner Feinstaubwerte, welche bei 1 und nicht bei 0 anfangen, kann ich alles noch um 1 verschieben. Also habe ich einen Phasenwinkel, der um 6(3,2) kleiner ist als der gewünschte. Das ist genau 1/4 meiner Frequenzlänge 24(12,8).
Was mich dann zu einer Cosinusfunktion bringt wegen der Verschiebung um [mm] \pi [/mm] halbe.
Wieso dass so ist, verstehe ich zwar nicht, da ich echte Probleme mit der Theorie hinter der FFT habe, aber damit könnte ich leben.
Wenn nun jemand mir als Nichtmathematiker diese letzte Frage noch beantworten kann, wäre das natürlich die Sahnehaube.
Ansonsten trotzdem danke für eure Bemühungen.
|
|
|
|