주요 콘텐츠

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)
lgn = "Record " + recnum + ", Signal " + info.SignalLabels(signum);
legend(lgn)
hold on

두 번째 신호의 다섯 번째 레코드를 추출하여 플로팅합니다.

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

plot(t,y,DisplayName=lgn)
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.

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는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

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

읽을 신호의 이름으로, string형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

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

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

예: ["Thorax 1" "Abdomen 3"]{'Thorax 1' 'Abdomen 3'} 모두 Thorax 1Abdomen 3을 파일에서 읽을 신호로 지정합니다.

데이터형: char | string

읽어 들일 레코드의 인덱스로, 양의 정수로 구성된 벡터로 지정됩니다. 벡터의 정수는 고유해야 하며 순증가해야 합니다.

  • SelectedDataRecords는 파일에 포함된 데이터 레코드의 서브셋이어야 합니다. 파일에 있는 레코드 수를 확인하려면 edfinfo 객체를 만들고 NumDataRecords 속성을 사용합니다. 또는 전체 파일을 읽고 MATLAB 함수 height를 사용합니다.

  • 이 인수를 지정하지 않으면 edfread에서 파일의 모든 데이터 레코드를 읽습니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

데이터 출력 유형으로, "vector" 또는 "timetable"로 지정됩니다.

  • "vector"data의 신호를 벡터로 반환합니다.

  • "timetable"data의 신호를 신호 샘플 시간에 해당하는 행 시간값을 갖는 timetable형으로 반환합니다.

데이터형: char | string

시간 출력 유형으로, "duration" 또는 "datetime"으로 지정됩니다.

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

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

데이터형: char | string

R2026a 이후

EDF 파일 또는 EDF+ 파일에서 주석을 읽기 위해 사용하는 문자 인코딩 형식으로, "UTF-8", "latin1" 또는 "US-ASCII"로 지정됩니다.

  • "UTF-8" — Unicode® 변환 형식으로, 8비트 문자 인코딩 표준입니다. 자세한 내용은 UTF-8을 참조하십시오.

  • "latin1" — ISO®/IEC 8859-1 문자 인코딩 표준으로, Latin alphabet No. 1이라고도 합니다. 자세한 내용은 ISO/IEC 8859-1을 참조하십시오.

  • "US-ASCII" — 미국 정보 교환 표준 부호 문자 인코딩 표준입니다. 자세한 내용은 ASCII를 참조하십시오.

데이터형: 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에 개발됨

모두 확장

참고 항목

객체

함수

외부 웹사이트