我有一组包含 EEG 信号数据的 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 的数组,并显示以下警告:
read -1, less than 8965120 requested!!!
有谁知道什么可能导致这样的问题?不幸的是,我无法分享任何数据,因为它是 PHI,但如果有任何其他信息可能会有所帮助,请询问。
一些额外的注意事项:
- 我还尝试
sig=f.readSignal(4,start=0,n=100)
确保文件的开头或任何类似的东西都没有问题,它返回一个长度为 100 的全 0 数组。 - 当我在 Matlab 中检查它们时,这些值是正确的(即非零)。
- 问题似乎是文件特定的(有些被正确处理,而另一些则没有),但是除了实际信号值之外,我找不到文件之间的任何差异
- 在我的完整应用程序中使用的索引 4
f.readSignal(4)
没有硬编码,这只是为了演示目的(在我的示例文件中,4 对应于 EEG 通道 F4)。
谢谢!
PS我也将此添加到pyedflib wiki。