Fourieranalyse zur Betrachtung des Frequenzbereichs

Methoden der Zeitreihenanalyse
Antworten
Marge
Beiträge: 10
Registriert: Mo Mai 14, 2018 10:35 pm

Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von Marge » So Jul 29, 2018 10:43 pm

Guten Abend zusammen,

ich habe einige Daten, von denen ich den Frequenzbereich ermitteln möchte. Die folgende Funktion habe ich dafür gefunden, der Code funktioniert soweit auch.

Code: Alles auswählen

d <- c(-0.538, -0.785, -1.123, -1.062, -1.031, -0.877, -0.846, -0.846, -0.877,-0.692,-0.508,-0.508,-0.538,-0.569,-0.538,-0.508,-0.600,-0.754,
-0.815,-0.877,-1.000,-1.062,-1.092,-1.123,-1.123,-1.369,-1.585,-1.154,-1.000,-1.062,-1.031,-1.092,-0.969,-0.938,-1.000,-0.938,-0.877,-0.723,
-0.538,-0.385,-0.415,-0.415,-0.600,-0.446,-0.477,-0.600,-0.785,-0.877,-1.000,-1.215,-1.369,-1.369,-1.369,-1.277,-1.862,-1.400,-0.938,-0.662,
-0.815,-1.215,-1.062,-1.062,-0.846,-0.846,-0.908,-0.723,-0.508,-0.385,-0.477,-0.508,-0.508,-0.477,-0.508,-0.569,-0.754,-0.969,-1.092,-1.092)

e <- c(0.344,0.313,0.313,0.219,0.063,0.000,-0.031,-0.094,-0.063,0.000,0.031,0.156,0.094,0.156,0.125,0.156,0.313,0.719,0.500,0.438,0.156, 0.125,0.031,-0.031,0.156,0.469,0.469,0.344,0.219,0.094,0.125,0.281,0.219,0.219,0.344,0.281,0.281,0.219,0.031,0.063,0.188,0.313,0.375,0.313,
0.219,0.063,0.094,0.219,0.406,0.594,0.500,0.313,0.344,0.281,0.219,0.281,0.281,0.281,0.250,0.063,0.063,0.000,-0.031,0.000,0.000,0.094,0.094,
0.125,0.219,0.313,0.344,0.563,0.500,0.094,-0.125,0.125,0.594,0.219)

res <- sqrt(d^2 + e^2)

xraw.spec <- spec.pgram(res, taper = 0)
plot(xraw.spec, log = "no")
Allerdings frage ich mich, ob das der richtige Ansatz ist und wenn ja, was genau mir die Plots zeigen. Brauche ich überhaupt beide Plots oder reicht der erste? Und was bedeutet der senkrechte blaue Strich am rechten Rand des ersten Plots - der Mittelwert?

Vielen Dank vorab für die Hilfe
Marge

jogo
Beiträge: 1018
Registriert: Fr Okt 07, 2016 8:25 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von jogo » Do Aug 02, 2018 1:45 pm

Hallo Marge,

Dein Code läuft soweit, aber bei mir erzeugt er nur einen Plot, welcher keinen blauen Strich enthält.

Gruß, Jörg

bigben
Beiträge: 720
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von bigben » Fr Aug 03, 2018 9:15 am

Hallo Jörg,

nein, der Code erzeugt zwei Plots hintereinander.

Code: Alles auswählen

xraw.spec <- spec.pgram(res, taper = 0)
erzeugt einen Plot in dem am rechten Bildrand in Blau irgendwie ein Intervall und ein Punkt in dem Intervall markiert wird. Ich denke, das ist gemeint.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

jogo
Beiträge: 1018
Registriert: Fr Okt 07, 2016 8:25 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von jogo » Fr Aug 03, 2018 9:21 am

Hallo Bernhard,

ah ja, jetzt sehe ich es auch. Es (das Erscheinen des blauen Strichs) betrifft den ersten Plot.
Da hilft vielleicht nur ein Abtauchen in den Quelltext der plot-Funktion.

Gruß, Jörg

bigben
Beiträge: 720
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von bigben » Fr Aug 03, 2018 11:54 am

jogo hat geschrieben:
Fr Aug 03, 2018 9:21 am
Da hilft vielleicht nur ein Abtauchen in den Quelltext der plot-Funktion.
Dann oute ich mich mal als zu blöd dafür. In der Funktion heißt es

Code: Alles auswählen

    spg.out <- list(freq = freq, spec = spec, coh = coh, phase = phase, 
        kernel = kernel, df = df, bandwidth = bandwidth, n.used = N, 
        [...]) # Auslassung von bigben
    class(spg.out) <- "spec"
    if (plot) {
        plot(spg.out, ...)
spg.out ist eine Liste, der die Klasse "spec" zugewiesen wird. Müsste der Aufruf von plot(spg.out) dann nicht zu einer Funktion plot.spec() oder so ähnlich führen? Ich erinnere mich, dass ich das mit den Klassen und den generishcen Funktionen mal genauer gewusst habe, aber irgendwie ist das alles wieder weg.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

jogo
Beiträge: 1018
Registriert: Fr Okt 07, 2016 8:25 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von jogo » Fr Aug 03, 2018 3:54 pm

Hallo Bernhard,
bigben hat geschrieben:
Fr Aug 03, 2018 11:54 am
jogo hat geschrieben:
Fr Aug 03, 2018 9:21 am
Da hilft vielleicht nur ein Abtauchen in den Quelltext der plot-Funktion.
Dann oute ich mich mal als zu blöd dafür. In der Funktion heißt es

Code: Alles auswählen

    spg.out <- list(freq = freq, spec = spec, coh = coh, phase = phase, 
        kernel = kernel, df = df, bandwidth = bandwidth, n.used = N, 
        [...]) # Auslassung von bigben
    class(spg.out) <- "spec"
    if (plot) {
        plot(spg.out, ...)
spg.out ist eine Liste, der die Klasse "spec" zugewiesen wird. Müsste der Aufruf von plot(spg.out) dann nicht zu einer Funktion plot.spec() oder so ähnlich führen?
richtig, und so wird es auch gemacht, siehe:

Code: Alles auswählen

method(plot)
Das Problem ist "nur", dass plot.spec() eine unsichtbare Funktion ist (dafür steht das Sternchen als Kennzeichen).
siehe auch

Code: Alles auswählen

P <- methods(plot)
str(P) ## bzw.:
unclass(P)
Ich erinnere mich, dass ich das mit den Klassen und den generischen Funktionen mal genauer gewusst habe, aber irgendwie ist das alles wieder weg.
war schon richtig, aber hier hilft nur:
https://stackoverflow.com/questions/192 ... a-function

Gruß, Jörg
p.s.:
Tolle Lektüre: https://stackoverflow.com/questions/tagged/r?sort=votes

bigben
Beiträge: 720
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von bigben » Fr Aug 03, 2018 4:09 pm

Super, jogo, dann hatte ich ein wenig richtig im Kopf und den Rest aber nicht mehr. Es ist alsop überhaupt nicht banal, in diesem Code nachzusehen. Manchmal denke ich, wir bräuchten eine Qualitätsoffensive für help-pages in R. Wenn eine Funktion was blaues malt, dann sollte auch in der Help-Page stehen, was das ist, und wie man das wegmacht. Außerdem sollten alle Packages ohne Vignette abgewertet werden. Na gut,

Vielen Danke für die Erklärung.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast