Pyedflib读取符号时出错

2024-03-29 08:18:45 发布

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

我有一组包含脑电图信号数据的EDF文件。我正在使用pyedflib来访问这些文件,但是我经常很难从某些文件中读取信号。基本上,当我试图读取信号值时,有很多文件都是0的数组。给予:

def get_sig(fname):
  import pyedflib
  f=pyedflib.EdfReader(fname)
  file_dur=f.getFileDuration()
  fs=int(inFile.getSignalHeader(0)['sample_rate'])
  chan_names=f.getSignalLabels()
  #note... channel names and file duration are captured correctly

  sig=f.readSignal(4)
  return sig

这将返回一个长度为“file_dur”*“fs”的数组,但结果是所有0的数组,并显示以下警告:

^{pr2}$

有人知道什么会引起这样的问题吗?不幸的是,我不能分享任何数据,因为它是PHI,但如果有任何额外的信息,可以询问。在

一些额外的注意事项:

  1. 我还尝试了sig=f.readSignal(4,start=0,n=100)以确保文件开头或其他类似内容没有问题,并且它返回一个长度为100的所有0的数组。在
  2. 当我在Matlab中检查这些值时,它们是正确的(即非零)。在
  3. 问题似乎与文件有关(有些文件处理正确,有些文件处理不正确),但是除了实际的信号值之外,我找不到文件之间的任何差异
  4. 在我的完整应用程序中,f.readSignal(4)中使用的索引4不是硬编码的,这只是为了演示目的(在我的示例文件中,4对应于EEG信道F4)。在

谢谢!在

另外,我也会把这个添加到pyedflibwiki中。在


Tags: 文件数据信号namesdef数组fsfname
1条回答
网友
1楼 · 发布于 2024-03-29 08:18:45

如果使用相同的句柄,pyedflib不会清理文件之间的内容。上面的代码可以正常运行,但是当作为驱动程序内部的循环实现时,我没有显式地关闭pyedflib文件句柄。一旦我在每个文件之后添加了f.close(),它就可以正常工作了。在

相关问题 更多 >