在时间序列数据中应用巴特沃斯过滤器

时间:2019-07-18 10:01:24

标签: frequency lowpass-filter butterworth highpass-filter bandpass-filter

我有以毫秒(ms)(69300行)为单位的时间序列数据,我想应用低通,高通和带通Butterworth滤波器。

我的方法如下:

  • 将ms转换为Hz
    • 找到奈奎斯特(Nyquist),它是采样率/ 2(因为采样率是转换后的Hz值)
    • 计算正弦波+噪声
    • 计算低通和高通滤波器的截止频率(通过将总Hz的0.1除以低通的奈奎斯特值,再取总Hz的0.25)
    • 对于带通滤波器,我计算出截止频率之差
    • 应用过滤器的-n阶
    • 使滤波器具有正弦波+噪声。

以下是我使用R创建的代码段:

# 69300 ms are 0.014430014430014Hz
x <- 1:69300

nyquist <- 0.014430014430014/2 # sampling rate/2

x1 <- sin(2*pi*RF*0.014430014430014) + 0.25*rnorm(length(RF)) 
# 0.014430014430014 Hz sinusoid+noise, RF is the time series metric

f_low <- 0.001443001/nyquist # 0.1 of total Hz divided by Nyquist
f_high <- 0.003607504/nyquist # 0.25 of total Hz divided by Nyquist

bf_low <- butter(4, f_low, type="low")
bf_high <- butter(4, f_high, type = "high")
bf_pass <- butter(4, 0.3000001, type = "pass") # f_high - f_low

b <- filter(bf_low, x1)
b1 <- filter(bf_high,x1) 
b2 <- filter(bf_pass,x1)

这是正确的方法吗?应该使用正弦曲线+噪声代替过滤器应用于指标本身吗?

0 个答案:

没有答案