edfread

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

Описание

пример

data = edfread(filename) считывает файл European Data Format (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 как timetables с временами строк, соответствующими шагам расчета сигнала.

Типы данных: 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] Кемп, Боб и Иисус Оливан. European Data Format 'plus' (EDF +), стандартный формат EDF для обмена физиологическими данными. Клиническая нейрофизиология 114, № 9 (2003): 1755-1761. https://doi.org/10.1016/S1388-2457 (03) 00123-8.

См. также

| | | |

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

Введенный в R2020b