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 object. The axes object 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® path

Задайте имя файла в filename.

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

Файл в папке

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

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

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

Примечание

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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] Грубая шерсть, Боб, Alpo Värri, Агостиньо К. Роза, Ким Д. Нильсен и Джон Гаде. “Простой Формат для Exchange Оцифрованных Полиграфических Записей”. Электроэнцефалография и Клиническая Нейрофизиология 82, № 5 (май 1992): 391–93. https://doi.org/10.1016/0013-4694 (92) 90009-7.

[2] Грубая шерсть, Боб и Иисус Оливэн. "Европейский Формат данных 'плюс' (EDF +), EDF, Подобная Стандартный формат для Exchange Физиологических Данных". Клиническая Нейрофизиология 114, № 9 (2003): 1755–1761. https://doi.org/10.1016/S1388-2457 (03) 00123-8.

Смотрите также

| | | |

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

Введенный в R2020b