Периодограмма (TSA In R) не может найти правильную частоту - PullRequest
2 голосов
/ 21 марта 2019

Я пытаюсь обработать набор данных синусоидального временного ряда:

Time Series Data Я использую этот код в R:

library(readxl)
library(stats)
library(matplot.lib)
library(TSA)

Data_frame<-read_excel("C:/Users/James/Documents/labssin2.xlsx")

# compute the Fourier Transform
p = periodogram(Data_frame$NormalisedVal)

dd = data.frame(freq=p$freq, spec=p$spec)
order = dd[order(-dd$spec),]
top2 = head(order, 5)
# display the 2 highest "power" frequencies
top2
time = 1/top2$f
time

Однако при рассмотрении частотного спектра частота (которая находится в Гц) смехотворно низкая ~ 0,02 Гц, тогда как она должна иметь одну гораздо большую частоту около 1 Гц, а другую - меньшую 0,02 Гц (просто визуально предполагая, что это синусоида). окутан другой синусоидой).

FFT of series

Может быть, это довольно тривиальная проблема, но есть ли у кого-нибудь идеи о том, что может пойти не так?

Заранее спасибо.


Редактировать 1: Использование

result <- abs(fft(df$Data_frame.NormalisedVal))

Создает то, что я ожидаю увидеть.

Second Fourier Trasform Attempt

Edit2: по запросу, текстовый файл с выводом в dput (Data_frame). http://m.uploadedit.com/bbtc/1553266283956.txt

1 Ответ

1 голос
/ 23 марта 2019

Функция периодограмма возвращает нормализованные частоты в диапазоне [0,0,5], где 0,5 соответствует частоте Найквиста , т.е. половине вашей частоты дискретизации.Поскольку у вас, похоже, есть данные, отобранные на частоте 60 Гц, скачок на 0,02 будет соответствовать частоте 0,02 * 60 = 1,2 Гц, что соответствует вашим ожиданиям и находится рядом с тем, что можно увидеть в предоставленных вами данных (основная массашип находится в диапазоне 0,7-1,1 Гц).

С другой стороны, ось X на последнем графике, который вы показываете на основе fft, является индексом, а не частотой.Соответствующую частоту следует вычислять по следующей формуле:

f <- (index-1)*fs/N

, где fs - частота дискретизации, а N - количество выборок, используемых fft.Таким образом, на вашем графике те же 1,2 Гц появятся с индексом ~ 31, предполагая, что N составляет приблизительно 1500.

Примечание : интервал выборки в предоставленных вами данных не совсем постоянени может повлиять на результаты, так как periodogram и fft предполагают регулярный интервал выборки.

...