如何在MatLab中过滤来自特定通道的EDF数据

时间:2016-07-24 18:40:24

标签: matlab plot european-data-format

您好我正在尝试从EEG耳机录制的EDF数据中绘制特定频道。目前它正在绘制所有通道,这看起来非常混乱。

这是过滤和使用edfread获取edf数据的脚本

clc
clear all
close all

%Convert data from edf to Matlab
[header, data] = edfread('Subject2.edf');
hFs = 128; % half of sampling rate of Emotiv EEG 

%design elliptic filter
Wp = [8/64 12/64]; %passband 
Ws = [7/64 13/64]; %stopband
Rp = 1; %ripple in the pass band
Rs = 30; %stopband attenuation

[N, Wn] = ellipord(Wp, Ws, Rp, Rs);
[B, A] = ellip(N, Rp, Rs, Wp);

%averaging to remove common noise
for i=1:36
   datan(i,:)=data(i,:)-mean(data);
end

%filtering of entire data into alpha band
data_alpha = filtfilt(B,A,datan);

以下是使用edf read后的EDF数据代码,返回此

header = 

            ver: 0
      patientID: '2                                                                               '
       recordID: '2                                                                               '
      startdate: '14.07.16'
      starttime: '04.41.41'
          bytes: 9472
        records: 1257
       duration: 1
             ns: 36
          label: {1x36 cell}
     transducer: {1x36 cell}
          units: {1x36 cell}
    physicalMin: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
    physicalMax: [1x36 double]
     digitalMin: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
     digitalMax: [1x36 double]
      prefilter: {1x36 cell}
        samples: [1x36 double]

所以当我使用`plot(data_alpha)时,我得到下面的图片,我相信这是在绘制所有的频道。

enter image description here

我想绘制已过滤的' MARKER' data,这是edf文件中的最后一个通道。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

有没有捕获?
我想您可以简单地绘制所选通道,如下面的示例所示:

ch = 10;
plot(data_alpha(ch, :))

我必须下载'Subject2.edf'(与你的不同)和edfread.m,它似乎有效。

我认为您的代码中发现了另一个问题:

根据Matlab文档:

  

plot(Y)创建Y中数据与每个值的索引的二维线图   如果Y是矢量,则x轴刻度的范围从1到长度(Y)   如果Y是矩阵,则绘图函数绘制Y的列与其行号。 x轴刻度的范围从1到Y中的行数   如果Y是复数,则绘图函数绘制Y的虚部与Y的实部相对应,使得绘图(Y)等效于绘图(实(Y),图(Y))。

图1-D,数据应该在列中,在样本中数据是行。

绘制一个频道:
plot(data_alpha(10, :))
enter image description here

绘制两个频道:
tmp = data_alpha(10:11, :);
转换plot(tmp')%tmp enter image description here

绘制所有通道(我样本中的25个):
转换plot(data_alpha')%data_alpha enter image description here