Leistungsdichtespektrum - power spectral density analyses

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
foena1988
Beiträge: 21
Registriert: Mo Okt 23, 2017 8:30 am

Leistungsdichtespektrum - power spectral density analyses

Beitrag von foena1988 »

Hallo liebes Forum,

Ich stehe vor einem Problem und würde euch gerne um Hilfe Fragen.

Ich beschäftige mich seit kurzem Mit der Analyse von Beschleunigungsmessdaten und würde diese gerne in die einzelnen Frequenzen des Signales zerlegen bzw. darstellen, welche Frequenzen am "intensivsten" auftreten. Zu diesem Zweck habe ich mich eingelesen und bin auf das Leistungsdichtespektrum (engl. power spectral density analyses) gestoßen. Nach meinem Verständnis werden als Ergebnis dieser Analyse auf der X-Achse die einzelnen Frequenzen und auf der Y-Achse deren Leistung / deren Intensität dargestellt. Soweit korrekt??

Das Ganze habe ich mit dem Packet "psd" und folgendem Code versucht:

Code: Alles auswählen

Daten <- read.table("Daten.csv", row.names=NULL, header=TRUE,dec=",",sep=";")
Beschleunigung <- Daten[,2]

Spektrum <- pspectrum(Daten[,2])

plot(Spektrum)
Das Ergebnis stellt sich wie folgt dar:
Ergebnis.jpeg
Folgende Fragen hätte ich nun dazu:

- Warum werden auf der X-Achse die Frequenzen nur bis 0,5 Hz (?) dargestellt, eigentlich sollten viel mehr Frequenzen vorhanden sein?? Wie kann ich es erreichen, dass mir wirklich alle Frequenzen dargestellt werden?

- Welche Aussage hat dieser blaue Strich im Bereich von 100 auf der Y-Achse?

- Was sagt mir die Beschriftung "bandwith = 0,538" aus?

Vielen Dank für eure Unterstützung, Lg
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Leistungsdichtespektrum - power spectral density analyses

Beitrag von consuli »

Schreib doch kurz den Deinen ganzen Cöder hin

Code: Alles auswählen

library(psd)
...
Am besten verstehen wir natürlich fertige Auswertungen, die die Diskrepanz zeigen. :)

Consuli
Irmgard.
foena1988
Beiträge: 21
Registriert: Mo Okt 23, 2017 8:30 am

Re: Leistungsdichtespektrum - power spectral density analyses

Beitrag von foena1988 »

Guten Morgen Consuli,

Anbei der gesamte Code:

Code: Alles auswählen


library(psd)

setwd("D:/R")
Daten <- read.table("Daten.csv", row.names=NULL, header=TRUE,dec=",",sep=";")
Beschleunigung <- Daten[,2]

Spektrum <- pspectrum(Daten[,2])

plot(Spektrum)
Bezüglich fertiger Auswertungen wird es schwierig, da ich erst am Beginn stehe. Im Gegensatz zu meinem "Ergebnis" (siehe Post 1) sollte in etwa so etwas herauskommen:
BfkAM.jpg
BfkAM.jpg (22.09 KiB) 1662 mal betrachtet
Es sollte also das gesamte Frequenzband auf der X-Achse dargestellt werden.

Dies ist allerdings nur als Zwischenschritt gedacht, um die Signale besser zu verstehen. Endgültig sollten solche Plots erzeugt werden:
M77_opt_spectrum.png
Wobei ich keine Ahnung habe, wie ich solche Plots erstellen kann.

Dankeschön und LG
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Leistungsdichtespektrum - power spectral density analyses

Beitrag von consuli »

Ich verstehe das immer noch nicht so ganz.

Der Verfasser des Packages psd hat die gleichen Daten noch woanders veröffentlicht?

Anders gefragt, wie kannst Du ausschließen, dass die Daten im package psd genau richtig geplottet werden, sondern die enthaltenen Daten nur anders sind, als Du Dir vorstellst?

Consuli
Irmgard.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Leistungsdichtespektrum - power spectral density analyses

Beitrag von bigben »

Hallo foena,
foena1988 hat geschrieben: Mo Okt 23, 2017 9:00 am - Warum werden auf der X-Achse die Frequenzen nur bis 0,5 Hz (?) dargestellt, eigentlich sollten viel mehr Frequenzen vorhanden sein?? Wie kann ich es erreichen, dass mir wirklich alle Frequenzen dargestellt werden?
Dazu kann man in die online-Hilfe von spectrum gucken. Da steht.
The spectrum here is defined with scaling 1/frequency(x), following S-PLUS. This makes the spectral density a density over the range (-frequency(x)/2, +frequency(x)/2],
Du hast nun einfach eine Zahlenreihe eingelesen und Dir nicht die Mühe gemacht, die in eine Zahlenreihe umzuwandeln. R hat also keine Informationen über die Samplingfrequenz und nimmt dann als Standard als Frequenz 1 an:

Code: Alles auswählen

> frequency(1:17)
[1] 1
Passt also zu der o. g. Formel.

Über den blauen Strich würde ich nachdenken, wenn die Umwandlung in eine Zeitserie erfolgt ist, und das Ding dann noch da ist.

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