私はfft()
ビットをラップ機能、持っている:
function(y, samp.freq, ...){
N <- length(y)
fk <- fft(y)
fk <- fk[2:length(fk)/2+1]
fk <- 2*fk[seq(1, length(fk), by = 2)]/N
freq <- (1:(length(fk)))* samp.freq/(2*length(fk))
return(data.frame(fur = fk, freq = freq))
}
y
があなたの信号の値であり、samp.freq
はそれのサンプル周波数です。出力はdata.frame
で、2つのカラムを持っています。fur
は高速フーリエ変換(Mod(fur)
は振幅になります)の後に得られる複素数で、freq
は対応する周波数のベクトルです。
周波数フィルタリングでは、信号パッケージを使用することを強くお勧めします。バターワースフィルタを用いた例について
:
library('signal')
bf <- butter(2, c(low, high), type = "pass")
signal.filtered <- filtfilt(bf, signal.noisy)
この場合、間隔はC(Low.freq、High.freq)*(2/samp.freq)として定義され、ここでLow.freqはと高くなければなりません.freq - 周波数間隔の境界。詳細は、パッケージドキュメントおよびoctave reference guideに記載されています。
また、fftでは(サンプル周波数)/ 2までの周波数しか得られないことに注意してください。
これらの周波数は私のバンドパスウィンドウ(10と15)にどのように関係していますか?この間隔に対応していないfftの値をゼロに設定するにはどうすればよいですか? – user3910073
あなたに適した値で答えを更新しました。 –