Main Content

edfread

EDF/EDF+ ファイルからのデータの読み取り

R2020b 以降

説明

data = edfread(filename) では、filename で指定された European Data Format (EDF) または EDF+ ファイルを timetable data に読み取ります。

data = edfread(filename,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションを使用して、ファイルを timetable に読み取ります。

また、[data,annotations] = edfread(___) は、データ レコードに存在する注釈を返します。

すべて折りたたむ

EDF ファイルの example.edf からデータを timetable に読み取ります。ファイルには ECGECG2 の 2 つの信号が含まれています。各信号には 6 つのデータ レコードが含まれ、各データ レコードの持続時間は 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}

example.edf に関する情報を含むedfinfoオブジェクトを作成します。期待どおりの名前の信号であることを確認します。オブジェクトの DataRecordDuration プロパティと NumSamples プロパティを使用して、信号のサンプル レートを抽出します。

info = edfinfo('example.edf');

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

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

   128
   128

最初の信号における最初のレコードをプロットします。テーブル内のデータへのアクセスの詳細については、table 内のデータへのアクセスを参照してください。

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

2 番目の信号における 5 番目のレコードを抽出してプロットします。

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)')

edfinfoオブジェクトを作成して、EDF ファイル example.edf に関する情報を取得します。ファイルに含まれているレコードの数と変数の名前を抽出します。

info = edfinfo('example.edf');

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

変数 ECG2 に対応する 2 番目と 5 番目のレコードを読み取ります。信号のサンプル時間に対応する行時間を含む 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    {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+ ファイルの名前。文字ベクトルまたは 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' は、ThoraxAbdomen の信号に対応する 2 番目と 7 番目のデータ レコードを読み取るように edfread に指示し、時間情報を datetime 配列として返します。

読み取る信号の名前。'SelectedSignals' と、文字ベクトルの string ベクトルまたは cell 配列で構成されるコンマ区切りのペアとして指定します。

  • '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 として返されます。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 で導入

参考

| | | |

外部の Web サイト