Fourieranalyse zur Betrachtung des Frequenzbereichs

Methoden der Zeitreihenanalyse

Moderator: schubbiaschwilli

Antworten
Marge

Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von Marge »

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: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von jogo »

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: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von bigben »

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: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von jogo »

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: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von bigben »

jogo hat geschrieben: Fr Aug 03, 2018 9:21 amDa 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: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von jogo »

Hallo Bernhard,
bigben hat geschrieben: Fr Aug 03, 2018 11:54 am
jogo hat geschrieben: Fr Aug 03, 2018 9:21 amDa 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: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fourieranalyse zur Betrachtung des Frequenzbereichs

Beitrag von bigben »

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