2015-09-02 1 views
3

Я пытаюсь удалить шум с помощью FFT в R. Проблема, с которой я сталкиваюсь, заключается в том, что я получаю сдвиг оси y во время процесса, и я не уверен какая причина. Я прочитал FFT и использовал this resource as a guide. Ниже приведен код, который я выполнял, а также образец графики результата. Вот ссылка на канал csv. data.csvПолучение смещения оси Y при удалении FFT-шума

data=read.csv('data.csv') 
plot(data,type='l') 

#FFT filtration function 
fft.filter=function(data,threshold){ 
    temp=fft(data) 
    temp[threshold:length(data)-threshold]=0+0i 
    temp=Re(fft(temp,inverse=TRUE)/length(temp)) 
    return(temp) 
} 

data2=data 
data2$Signal=fft.filter(data2$Signal,100) 

нефильтрованный Участок: enter image description here

Отфильтрованный Участок: enter image description here

Как показывают изображения, масштабирование данных выглядит нормально, я просто получаю сдвиг, который я не думаю, что я должен быть. Функция FFT работает, чтобы удалить шум из серии.

ответ

2

Существует проблема с индексированием. Он индексируется от 0 до length(data)-threshold, тогда как вы хотите threshold:(length(data)-threshold) Я верю. Изменить индексную линию на

temp[threshold:(length(data)-threshold)]=0+0i