exponenta event banner

edfread

Считывание данных из файла EDF/EDF +

Описание

пример

data = edfread(filename) считывает файл европейского формата данных (EDF) или EDF +, указанный вfilename в расписание, data.

пример

data = edfread(filename,Name,Value) считывает файл в расписание с дополнительными параметрами, заданными одним или несколькими аргументами пары имя-значение.

[data,annotations] = edfread(___) также возвращает аннотации, присутствующие в записях данных.

Примеры

свернуть все

Считывание данных из EDF-файла example.edf в расписание. Файл содержит два сигнала, ECG и ECG2. Каждый сигнал содержит шесть записей данных, и каждая запись данных имеет длительность 10 секунд.

tt = edfread('example.edf')
tt=6×2 timetable
    Record Time          ECG               ECG2      
    ___________    _______________    _______________

    0 sec          {1280x1 double}    {1280x1 double}
    10 sec         {1280x1 double}    {1280x1 double}
    20 sec         {1280x1 double}    {1280x1 double}
    30 sec         {1280x1 double}    {1280x1 double}
    40 sec         {1280x1 double}    {1280x1 double}
    50 sec         {1280x1 double}    {1280x1 double}

Создание edfinfo объект, содержащий информацию о example.edf. Убедитесь, что сигналы имеют ожидаемые имена. Извлеките частоты дискретизации сигналов с помощью свойств объекта DataRecordDuration и NumSamples.

info = edfinfo('example.edf');

info.SignalLabels
ans = 2x1 string
    "ECG"
    "ECG2"

fs = info.NumSamples/seconds(info.DataRecordDuration)
fs = 2×1

   128
   128

Постройте график первой записи первого сигнала. Дополнительные сведения о доступе к данным в таблицах см. в разделе Доступ к данным в таблицах.

recnum = 1;
signum = 1;
t = (0:info.NumSamples(signum)-1)/fs(signum);
y = tt.(signum){recnum};

plot(t,y)
legend(strcat("Record ",int2str(recnum),", Signal ",info.SignalLabels(signum)))
hold on

Извлеките и постройте пятую запись второго сигнала.

recnum = 5;
signum = 2;
t = (0:info.NumSamples(signum)-1)/fs(signum);
y = tt.(signum){recnum};

plot(t,y, ...
    'DisplayName',strcat("Record ",int2str(recnum),", Signal ",info.SignalLabels(signum)))
hold off
xlabel('t (seconds)')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Record 1, Signal ECG, Record 5, Signal ECG2.

Создание edfinfo объект для получения информации о EDF-файле example.edf. Извлеките количество записей и имена переменных, содержащихся в файле.

info = edfinfo('example.edf');

nrec = info.NumDataRecords
nrec = 6
vars = info.SignalLabels
vars = 2x1 string
    "ECG"
    "ECG2"

Считывание второй и пятой записей, соответствующих переменной ECG2. Возвращает сигналы в виде расписаний с временами строк, соответствующими временам выборки сигнала. Выразить информацию о времени как datetime массивы.

data = edfread('example.edf', ...
    'SelectedDataRecords',[2 5],'SelectedSignals',"ECG2", ...
    'DataRecordOutputType','timetable','TimeOutputType','datetime')
data=2×1 timetable
        Record Time                ECG2       
    ____________________    __________________

    10-Oct-2020 12:02:28    {1280x1 timetable}
    10-Oct-2020 12:02:58    {1280x1 timetable}

Измените имя времени строки на "Date and Time" и имя переменной для "Electrocardiogram".

data.Properties.DimensionNames = ["Date and Time" "Variables"];
data.Properties.VariableNames = "Electrocardiogram";

data
data=2×1 timetable
       Date and Time        Electrocardiogram 
    ____________________    __________________

    10-Oct-2020 12:02:28    {1280x1 timetable}
    10-Oct-2020 12:02:58    {1280x1 timetable}

Входные аргументы

свернуть все

Имя файла EDF или EDF +, заданного как вектор символа или скаляр строки.

В зависимости от расположения файла, filename может принимать одну из этих форм.

Местоположение

Форма

Текущая папка или папка на пути MATLAB ®

Укажите имя файла в filename.

Пример: 'data.edf'

Файл в папке

Если файл находится не в текущей папке или в папке на пути MATLAB, укажите полный или относительный путь.

Пример: 'C:\myFolder\data.edf'

Пример: 'myDir\myFile.ext'

Примечание

edfread не поддерживает файлы EyeLink ® EDF.

Типы данных: char | string

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'SelectedSignals',["Thorax" "Abdomen"],'SelectedDataRecords',[2 7],'TimeOutputType','datetime' инструктирует edfread для считывания второй и седьмой записей данных, соответствующих Thorax и Abdomen сигналы и возвращают временную информацию как datetime массивы.

Имена считываемых сигналов, указанных как разделенная запятыми пара, состоящая из 'SelectedSignals' и строковый вектор или клеточный массив символьных векторов.

  • 'SelectedSignals' должен быть подмножеством имен сигналов, содержащихся в файле. Чтобы получить имена всех сигналов в файле, создайте edfinfo объект и используйте SignalLabels собственность.

  • Если этот аргумент не указан, edfread считывает все сигналы в файле.

Пример: Оба ["Thorax 1" "Abdomen 3"] и {'Thorax 1' 'Abdomen 3'} определить Thorax 1 и Abdomen 3 в качестве сигналов для чтения из файла.

Типы данных: char | string

Индексы читаемых записей, указанные как разделенная запятыми пара, состоящая из 'SelectedDataRecords' и вектор положительных целых чисел. Целые числа в векторе должны быть уникальными и строго увеличивающимися.

  • 'SelectedDataRecords' должен быть подмножеством записей данных, содержащихся в файле. Чтобы узнать, сколько записей в файле, создайте edfinfo объект и используйте NumDataRecords собственность. Либо прочтите весь файл и используйте функцию MATLAB. height.

  • Если этот аргумент не указан, edfread считывает все записи данных в файле.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Тип вывода данных, указанный как разделенная запятыми пара, состоящая из 'DataRecordOutputType' и либо 'vector' или 'timetable'.

  • 'vector' - Вернуть сигналы в data в качестве векторов.

  • 'timetable' - Вернуть сигналы в data в качестве расписаний с временами строк, соответствующими временам выборки сигнала.

Типы данных: char | string

Тип выходного сигнала времени, указанный как разделенная запятыми пара, состоящая из 'TimeOutputType' и либо 'duration' или 'datetime'.

  • 'duration' - Возврат информации о времени в data как duration массивы.

  • 'datetime' - Возврат информации о времени в data как datetime массивы.

Типы данных: char | string

Выходные аргументы

свернуть все

Выходные данные, возвращаемые в виде расписания. Каждая строка data соответствует записи и каждой переменной data соответствует сигналу.

  • Если 'DataRecordOutputType' указывается как 'vector', сегмент сигнала для каждой записи данных возвращается в виде вектора.

  • Если 'DataRecordOutputType' указывается как 'timetable', сегмент сигнала для каждой записи данных возвращается в виде расписания с временами строк, соответствующими временам выборки сигнала.

Время каждой строки data содержит время начала соответствующей записи данных.

  • Если 'TimeOutputType' имеет значение 'duration'время начала каждой записи относительно времени начала записи файла.

  • Если 'TimeOutputType' имеет значение 'datetime', время начала каждой записи - абсолютное время начала.

Запись аннотаций, возвращаемых в виде расписания. Расписание содержит следующие переменные:

  • Onset - время, в которое произошла аннотация. Тип данных Onset зависит от значения, указанного для 'TimeOutputType'.

  • Annotations - строка, содержащая текст аннотации.

  • Duration - скаляр длительности, указывающий длительность события, описанного аннотацией. Если в файле не указана продолжительность аннотации, эта переменная возвращается как NaN.

Ссылки

[1] Кемп, Боб, Алпо Вярри, Агостиньо К. Роза, Ким Д. Нильсен и Джон Гейд. «Простой формат обмена оцифрованными полиграфическими записями». Электроэнцефалография и клиническая нейрофизиология 82, № 5 (май 1992): 391-93. https://doi.org/10.1016/0013-4694 (92) 90009-7.

[2] Кемп, Боб и Иисус Оливан. «Европейский формат данных» плюс «(EDF +), аналогичный EDF стандартный формат для обмена физиологическими данными». Клиническая нейрофизиологическая 114, № 9 (2003): 1755-1761. https://doi.org/10.1016/S1388-2457 (03) 00123-8.

См. также

| | | |

Внешние веб-сайты

Представлен в R2020b