Zur Installation führen die die folgenden Befehle aus:
install.packages(c("oce","signal","serial"))
install.packages("infrasonic2", repos = "http://www.bayceer.uni-bayreuth.de/R-repository", type="source")
Update geht über
update.packages(repos = "http://www.bayceer.uni-bayreuth.de/R-repository", type="source")
Das Handling der Daten erfolgt über eine Liste. Diese hat drei Einträge:
1. $values: Vektor mit den Druckdaten in Pa
2. $freq: Sampling-Frequenz in Hz
3. $start: Startzeitpunkt der Messung als POSIXct
Man kann somit auch künstlich Daten erzeugen, z.B. mit dem folgenden R-Code:
values=rnorm(10001,sd=0.1)+2*sqrt(2)*sin(2*pi*seq(0,100,0.01) ## Datenreihe
d=list(values=values,freq=100,start=as.POSIXct("2021-04-06 12:00")) ## Liste
Jetzt hat man eine künstliche Datenreihe mit einem 100dB-1Hz-Sinussignal auf einem Rauschhintergrund. Die Datenreihe wurde mit 100Hz aufgenommen. Startzeitpunkt ist 06.04.2021 12:00 lokale Zeit.
Als nächstes muss man das Paket laden:
library(infrasonic2) ## Laden des Pakets
Zum Plotten des Rohsignals gibt es den Befehl
infrasonic.plotSignal(d) ## Plotten der gesamten Rohdaten
Mit diesem Befehl sollte man bei sehr langen Datenreihen jedoch vorsichtig sein. Dies kann dazu führen, dass die Darstellung extrem lang dauert.
Besser ist es über Funktionsparameter den Ausschnitt einzuschränken. Z.B.:
infrasonic.plotSignal(d,duration=10,offset=5) # 5-15 s
infrasonic.plotSignal(d,t_abs_lim=c("2021-04-06 12:00:10","2021-04-06 12:00:15")) # 10-15 s
Das Frequenzspektrum erhält man über
infrasonic.plotFFT(d) ## Frequenzspektrum
Die Berechnung des Schmalbandspektrums erfolgt über ein Hanning-Fenster. Die Terzpegel werden durch Summierung der Schmalbandpegel berechnet. Auch die Funktion infrasonic.plotFFT lässt sich über Parameter verändern. Interessant ist v.a. die Frequenzauflösung.
infrasonic.plotFFT(d,res=0.02) ## berechnet Schmalbandspektrum mit 0.02Hz Bin-Breite
Zum Erzeugen eines Spektrogramms gibt es die Funktion
infrasonic.plotSpectrogram(d,db_lim = c(40,100)) ## Spektrogramm
Der Parameter db_lim legt die Farbskala fest. Weitere Parameter sind in der Hilfe beschrieben
?infrasonic.plotSpectrogram ## Aufrufen der Hilfeseite
Natürlich lassen sich die Funktionen, die der Berechnung der Plots zugrunde liegen auch einzeln aufrufen. Dies geht mit der Funktion
infrasonic.calcFFT(d) ## Berechnung des Frequenzspektrums
Per default liefert diese Funktion das RMS gemittelte Spektrum. Alternativ kann man sich auch die Matrix ausgeben lassen. Dazu setzt man den Parameter matrix_output=T
Zur Berchnung der Terzpegel gibt es die Funktion
infrasonic.calcThirds(d) ## Berechnung des Terzspektrums
Rückgabe dieser Funktion ist ein data.frame. In der Spalte ws stehen die dB-Werte der Wahrnehmungsschwelle. Diese sollten zur Bewertung der Pegel herangezogen werden.
Natürlich arbeitet man nicht mit künstlich generierten Datensätzen sondern mit echten Messungen. Zum Einlesen von Messungen gibt es den Befehl
d=infrasonic.readRaw("pfad/datei_name.csv") ## Einlesen einer Messung und speichern in der Variable d
Die Auswertung der eingelesenen Daten erfolg dann mit den oben beschriebenen Befehlen.
08.08.2024 Artikel in VGBE Energy: Infraschall von Windenergieanlagen – Viel Lärm um nichts |