在python中是否有任何准备好的函数将过滤器(例如Butterworth过滤器)应用于给定信号?我在'scipy.signal'中寻找这样的函数,但我没有找到任何有用的函数,而不是过滤设计函数.实际上我希望这个函数将滤波器与信号进行卷积.
我使用以下代码在python中实现了高通滤波器:
from scipy.signal import butter, filtfilt
import numpy as np
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
rawdata = np.loadtxt('sampleSignal.txt', skiprows=0)
signal = rawdata
fs = 100000.0
cutoff = 100
order = 6
conditioned_signal = butter_highpass_filter(signal, cutoff, fs, order)
Run Code Online (Sandbox Code Playgroud)
我在100 kHz电压信号上应用此滤波器,它对于> = 60 Hz的截止频率工作正常.但它在下面不起作用.我想切断低于10赫兹的所有频率.我的错误是什么提示?我观察到的是滤波器的阶数越低,截止频率就越低.
我有一个pandas.DataFrame按时间索引的索引,如下所示。另一列包含从测量电流的设备记录的数据。我想通过频率为5Hz的低通滤波器过滤到第二列,以消除高频噪声。我想返回一个数据框,但是我不介意它是否更改了过滤器应用程序的类型(numpy数组等)。
In [18]: print df.head()
Time
1.48104E+12 1.1185
1.48104E+12 0.8168
1.48104E+12 0.8168
1.48104E+12 0.8168
1.48104E+12 0.8168
Run Code Online (Sandbox Code Playgroud)
我通过绘制此数据,df.plot(legend=True, use_index=False, color='red')但想绘制过滤后的数据。
我在用 pandas 0.18.1但我可以更改。
我已经访问了https://oceanpython.org/2013/03/11/signal-filtering-butterworth-filter/和许多其他类似方法的资源。