주요 콘텐츠

edfread

EDF/EDF+ 파일에서 데이터 읽기

설명

data = edfread(filename)filename에 지정된 EDF(유럽 데이터 형식) 파일 또는 EDF+ 파일을 타임테이블인 data로 읽어 들입니다.

예제

data = edfread(filename,Name,Value)는 하나 이상의 이름-값 쌍 인수로 지정된 추가 옵션을 사용하여 파일을 타임테이블로 읽어 들입니다.

예제

[data,annotations] = edfread(___)는 데이터 레코드에 있는 주석도 반환합니다.

예제

모두 축소

EDF 파일 example.edf의 데이터를 타임테이블로 읽어 들입니다. 이 파일에는 ECGECG2라는 2개의 신호가 포함되어 있습니다. 각 신호에는 6개의 데이터 레코드가 포함되어 있으며, 각 데이터 레코드의 기간은 10초입니다.

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

    0 sec          {1280×1 double}    {1280×1 double}
    10 sec         {1280×1 double}    {1280×1 double}
    20 sec         {1280×1 double}    {1280×1 double}
    30 sec         {1280×1 double}    {1280×1 double}
    40 sec         {1280×1 double}    {1280×1 double}
    50 sec         {1280×1 double}    {1280×1 double}

example.edf에 대한 정보가 포함된 edfinfo 객체를 생성합니다. 신호 이름이 예상했던 대로인지 확인합니다. 객체의 DataRecordDuration 속성과 NumSamples 속성을 사용하여 신호의 샘플 레이트를 추출합니다.

info = edfinfo('example.edf');

info.SignalLabels
ans = 2×1 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 with xlabel t (seconds) contains 2 objects of type line. These objects represent Record 1, Signal ECG, Record 5, Signal ECG2.

EDF 파일 example.edf에 대한 정보를 가져오는 edfinfo 객체를 만듭니다. 파일에 포함된 레코드 개수와 변수 이름을 추출합니다.

info = edfinfo('example.edf');

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

변수 ECG2에 해당하는 두 번째 레코드와 다섯 번째 레코드를 읽습니다. 신호를 신호 샘플 시간에 해당하는 행 시간값을 갖는 timetable형으로 반환합니다. 시간 정보를 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    {1280×1 timetable}
    10-Oct-2020 12:02:58    {1280×1 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    {1280×1 timetable}
    10-Oct-2020 12:02:58    {1280×1 timetable}

입력 인수

모두 축소

EDF 또는 EDF+ 파일 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

파일 위치에 따라 filename은 다음 형식 중 하나가 될 수 있습니다.

위치

형식

현재 폴더 또는 MATLAB® 경로의 폴더

filename에 파일 이름을 지정합니다.

예: 'data.edf'

폴더의 파일

파일이 현재 폴더 또는 MATLAB 경로의 폴더에 없는 경우 전체 경로 이름 또는 상대 경로 이름을 지정합니다.

예: 'C:\myFolder\data.edf'

예: 'myDir\myFile.ext'

참고

edfread 객체는 EyeLink® EDF 파일을 지원하지 않습니다.

데이터형: char | string

이름-값 인수

모두 축소

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'SelectedSignals',["Thorax" "Abdomen"],'SelectedDataRecords',[2 7],'TimeOutputType','datetime'edfreadThoraxAbdomen에 해당하는 두 번째와 일곱 번째 데이터 레코드를 읽고 시간 정보를 datetime 배열로 반환하도록 지시합니다.

읽을 신호의 이름으로, 'SelectedSignals'와 함께 string형 벡터 또는 문자형 벡터로 구성된 셀형 배열이 쉼표로 구분되어 지정됩니다.

  • 'SelectedSignals'는 파일에 포함된 신호 이름의 서브셋이어야 합니다. 파일에 있는 모든 신호의 이름을 가져오려면 edfinfo 객체를 만들고 SignalLabels 속성을 사용합니다.

  • 이 인수가 지정되지 않으면 edfread에서 파일의 모든 신호를 읽습니다.

예: ["Thorax 1" "Abdomen 3"]{'Thorax 1' 'Abdomen 3'} 모두 Thorax 1Abdomen 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의 신호를 신호 샘플 시간에 해당하는 행 시간값을 갖는 timetable형으로 반환합니다.

데이터형: char | string

시간 출력 유형으로, 'TimeOutputType'과 함께 'duration' 또는 'datetime' 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'duration'data의 시간 정보를 duration 배열로 반환합니다.

  • 'datetime'data의 시간 정보를 datetime 배열로 반환합니다.

데이터형: char | string

출력 인수

모두 축소

출력 데이터로, timetable형으로 반환됩니다. data의 각 행은 레코드에 해당하고, data의 각 변수는 신호에 해당합니다.

  • 'DataRecordOutputType''vector'로 지정된 경우 각 데이터 레코드의 신호 세그먼트가 벡터로 반환됩니다.

  • 'DataRecordOutputType''timetable'로 지정된 경우 각 데이터 레코드의 신호 세그먼트가 신호 샘플 시간에 해당하는 행 시간값을 갖는 timetable형으로 반환됩니다.

data의 각 행 시간값에는 해당 데이터 레코드의 시작 시간이 포함됩니다.

  • 'TimeOutputType''duration'으로 설정된 경우 각 레코드의 시작 시간은 파일 기록 시작 시간을 기준으로 합니다.

  • 'TimeOutputType''datetime'으로 설정된 경우 각 레코드의 시작 시간은 절대 시작 시간입니다.

레코드 주석으로, timetable형으로 반환됩니다. 타임테이블에는 다음 변수가 포함됩니다.

  • Onset — 주석이 발생한 시간입니다. Onset의 데이터형은 'TimeOutputType'에 지정된 값에 따라 달라집니다.

  • Annotations — 주석 텍스트가 포함된 문자열입니다.

  • Duration — 주석에서 설명하는 이벤트의 기간을 나타내는 duration형 스칼라입니다. 파일에 주석 기간이 지정되지 않은 경우 이 변수는 NaN으로 반환됩니다.

참고 문헌

[1] Kemp, Bob, Alpo Värri, Agostinho C. Rosa, Kim D. Nielsen, and John Gade. “A Simple Format for Exchange of Digitized Polygraphic Recordings.” Electroencephalography and Clinical Neurophysiology 82, no. 5 (May 1992): 391–93. https://doi.org/10.1016/0013-4694(92)90009-7.

[2] Kemp, Bob, and Jesus Olivan. "European Data Format 'plus' (EDF+), an EDF Alike Standard Format for the Exchange of Physiological Data." Clinical Neurophysiology 114, no. 9 (2003): 1755–1761. https://doi.org/10.1016/S1388-2457(03)00123-8.

버전 내역

R2020b에 개발됨

참고 항목

| | | |

외부 웹사이트