时间序列数据python中的高频滤波

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

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

我有下面的csv文件包含来自电生理学的数据。第三列包含使用软件过滤的数据。第二列包含未过滤的数据。在

data = pd.read_csv("trial_filtered.csv")
datad = np.asarray(data)

x1 = datad[:100,0]
y1 = datad[:100,1]
y2 = datad[:100, 2]

我想画出这个数据,比较过滤过的和未过滤的。在

^{pr2}$

另外,我想过滤掉第二列40Hz以上的所有内容,然后创建一个附加列。在

我试过以下几种方法,但总是被卡住。有没有其他方法可以在不使用nitime模块的情况下从我的时间序列数据中过滤出高频?在

y3 = []
ts_y1 = nitime.TimeSeries(y1, time_unit='ms', sampling_interval=1.0)
#let's take out everything above 30 hertz
filter = nitime.analysis.FilterAnalyzer(ts_y1, lb=0., ub=40.)
filtered_ts = filter.fir.datad
y3.append(filtered_ts.copy()) 

Tags: 文件csv数据方法data软件filterfiltered
1条回答
网友
1楼 · 发布于 2024-09-27 07:27:45

如果要在一个图形中显示所有序列, 你可以用plt.绘图()连续呼叫, 最后以一个表演(),这将把它们放在一个数字中。在

对于第二个问题,如果您需要“硬”滤波器,可以尝试使用FFT模块,如下所示:

  1. FFT信号,计算出30Hz的等效角频率,

  2. 找到垃圾箱,并将高于该频率的所有垃圾箱设置为零。(在执行此操作之前,请记住使用fftshift)

  3. 做一个ifft,你得到一个低通滤波信号。我会写一个小脚本来说明和上传到这里很快。

我希望这有帮助!在

相关问题 更多 >

    热门问题