降水数据的高通滤波器

2024-09-27 07:20:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经尝试在python中实现一个高通滤波器来测量每小时的降水量。我需要过滤24小时以上的低频。在

Data

我修改了以下代码: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的数组

我想问题是因为它是非正弦的,但我不确定。如果这是问题所在,我如何筛选此数据集?在

有什么提示吗?错在哪里?在

谢谢


Tags: csv代码importdfdataasdtorder

热门问题