我试图在python中实现高通滤波器以进行每小时降水测量。我需要在24小时内过滤低频率。
我已修改此代码:Python High Pass Filter
import numpy as np
import pandas as pd
from pandas import Series
import csv
import matplotlib.pyplot as plt
from scipy import signal
def butter_highpass(cutoff, fs, order=5):
nyq = 0.5 * fs
normal_cutoff = cutoff / nyq
b, a = butter(order, normal_cutoff, btype='high', analog=False)
return b, a
def butter_highpass_filter(data, cutoff, fs, order=5):
b, a = butter_highpass(cutoff, fs, order=order)
y = filtfilt(b, a, data)
return y
df= pd.read_csv('pp_2010.csv', sep=',', parse_dates=['Date'])
df= df.set_index('Date')
dt=3600
fs=1/float(dt)
cutoff=1/float(dt*24)
data=np.array(df['pp/hr'])
data_fl = butter_highpass_filter(data,cutoff,fs)
plt.plot(data,label='obs')
plt.plot(data_fl,label='filtered')
plt.show()
代码正在运行,我已尝试使用链接示例。在我的例子中,data_fl是一个由nan组成的数组。
我认为问题是因为是非正弦的,但我不确定。如果这是问题,我该如何过滤此数据集?
任何提示是什么错误?
感谢