您好我正在尝试从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)时,我得到下面的图片,我相信这是在绘制所有的频道。
我想绘制已过滤的' MARKER' data,这是edf文件中的最后一个通道。我怎么能这样做?
答案 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, :))