Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

edfwrite

EDF または EDF+ ファイルの作成または変更

R2021a 以降

    説明

    edfwrite オブジェクトを作成して、European Data Format (EDF) または EDF+ ファイルの書き込みまたは変更を行います。

    作成

    説明

    edfw = edfwrite(filename) は、filename で指定された既存の EDF または EDF+ ファイルの edfwrite オブジェクトを作成します。

    edfw = edfwrite(filename,hdr,sigdata) は、edfwrite オブジェクトを作成し、信号データ sigdata を含む新しい EDF または EDF+ ファイルを作成します。ファイルのプロパティは、ヘッダー構造体 hdr で指定されます。

    edfw = edfwrite(filename,hdr,annotationslist) は、edfwrite オブジェクトを作成し、注釈 annotationslist を含む新しい EDF または EDF+ ファイルを作成します。

    edfw = edfwrite(filename,hdr,sigdata,annotationslist) は、edfwrite オブジェクトを作成し、信号データと注釈を含む新しい EDF または EDF+ ファイルを作成します。

    edfw = edfwrite(___,Name,Value) は、名前と値の引数を使用してプロパティを設定します。DataRecordTimesAnnotationsEncodingInputSampleType を指定できます。

    入力引数

    すべて展開する

    EDF または EDF+ ファイルの名前。文字ベクトルまたは string スカラーとして指定します。

    ファイルの場所に応じて、filename は次の形式のいずれかを取ります。

    位置

    形式

    現在のフォルダーまたは MATLAB® パス上のフォルダー

    filename でファイルの名前を指定します。

    例: 'data.edf'

    フォルダー内のファイル

    ファイルが現在のフォルダーまたは MATLAB パス上のフォルダーにない場合は、絶対パス名または相対パス名を指定します。

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

    例: 'myDir\myFile.ext'

    メモ

    edfwrite は EyeLink® EDF ファイルをサポートしていません。

    データ型: char | string

    ヘッダーの詳細。構造体として指定します。詳細については、edfheader を参照してください。

    データ型: struct

    信号データ。1 つ以上の列を含む数値行列、または数値ベクトルの cell 配列として指定します。

    データ型: double | cell

    注釈。次の変数を含む timetable として指定します。

    • Onset — 注釈が発生した時間。ファイルの開始時間から経過した秒数を示す持続時間として表されます。Onset を使用して timetable 内の rowTimes を指定します。

    • Annotations — 注釈テキストを含む文字列。

    • Duration — 注釈によって記述されたイベントの持続時間を示す duration スカラー。ファイルで注釈の持続時間が指定されていない場合、この変数は NaN として返されます。

    データ型: table

    プロパティ

    すべて展開する

    ファイルのプロパティ

    この プロパティ は読み取り専用です。

    ファイル名。string スカラーとして返されます。

    例: "ecg_20200411_120.edf"

    データ型: string

    ファイル タイプ。"EDF" または "EDF+" として返されます。

    データ型: string

    この プロパティ は読み取り専用です。

    最終変更日。ファイルが最後に変更された日時を含む string スカラーとして返されます。

    例: "11-Apr-2020 15:38:37"

    この プロパティ は読み取り専用です。

    ファイル サイズ (バイト単位)。整数スカラーとして返されます。

    例: 4040992

    データ型: double

    ヘッダーのプロパティ

    この プロパティ は読み取り専用です。

    データ形式のバージョン。"0" として返されます。

    データ型: string

    この プロパティ は読み取り専用です。

    患者識別の詳細。string スカラーとして返されます。患者識別の詳細には、患者 ID、性別またはジェンダー、'dd-MMM-yyyy' 形式の生年月日、および名前が含まれます。

    例: "X F X 120 04-JUL-1982"

    データ型: string

    この プロパティ は読み取り専用です。

    識別の詳細の記録。string スカラーとして返されます。識別の詳細の記録には、開始日時、記録を行った技術者の ID、および記録に使った装置の ID が含まれる場合があります。

    例: "Startdate 04-JUL-1982 X X X"

    データ型: string

    この プロパティ は読み取り専用です。

    記録開始日。'dd.MM.yy' 形式の string スカラーとして返されます。

    例: "04.07.82"

    データ型: string

    この プロパティ は読み取り専用です。

    記録開始時間。'HH.mm.ss' 形式の string スカラーとして返されます。

    例: "17.16.37"

    データ型: string

    この プロパティ は読み取り専用です。

    ヘッダー サイズ (バイト単位)。整数スカラーとして返されます。HeaderBytes(256 + NumSignals × 256) バイトで指定されます。最初の 256 バイトは静的ヘッダーに対応し、すべての EDF および EDF+ ファイルに必要です。その他のバイトは、データ レコードに存在する信号の数によって異なります。

    例: 2048

    データ型: double

    この プロパティ は読み取り専用です。

    EDF+ の中断情報。EDF+ 準拠ファイルに対して "EDF+C" または "EDF+D" として返されます。

    • "EDF+C" — 記録は連続しています。中断はなく、すべてのデータ レコードは連続しているため、各データ レコードの開始時間は、前のレコードの開始時間に記録時間を加えたものと一致します。

    • "EDF+D" — 記録は不連続であり、連続するデータ レコード間に中断があります。

    EDF+ に準拠していないファイルの場合、このプロパティは空の文字列 ("") になります。

    データ型: string

    この プロパティ は読み取り専用です。

    ファイル内のデータ レコードの数。整数スカラーとして返されます。

    メモ

    filename が EDF に準拠していない場合、データ レコードの数が不明なときには NumDataRecords-1 に設定できます。filename が EDF に準拠している場合、NumDataRecords を正の整数に設定しなければなりません。filenameReserved が空以外の文字列に設定されていて、NumDataRecords-1 に設定されている場合、edfinfo はエラーをスローします。

    データ型: double

    この プロパティ は読み取り専用です。

    各データ レコードの持続時間。duration スカラーとして返されます。

    データ型: duration

    この プロパティ は読み取り専用です。

    ファイル内の信号の数。整数スカラーとして返されます。

    データ型: double

    各データ レコードの開始時間。duration ベクトルとして返されます。不連続なレコード開始時間を含む EDF+ ファイルには DataRecordTimes を指定しなければなりません。ベクトルの長さは NumDataRecords と等しくなければなりません。

    データ型: duration

    信号プロパティ

    この プロパティ は読み取り専用です。

    信号名。長さ NumSignals の string ベクトルとして返されます。

    ["Thorax 1";"Abdomen 3"]

    データ型: string

    この プロパティ は読み取り専用です。

    変換器の詳細。長さ NumSignals の string ベクトルとして返されます。TransducerTypes の各要素には、SignalLabels の対応する信号を取得するために使用される変換器に関する詳細が含まれます。

    例: ["AgAgCl electrodes";"thermistor"]

    データ型: string

    この プロパティ は読み取り専用です。

    信号のデータ単位。長さ NumSignals の string ベクトルとして返されます。PhysicalDimensions の各要素には、SignalLabels の対応する信号の値を表すために使用される測定単位が含まれます。

    例: ["uV";"mV"]

    データ型: string

    この プロパティ は読み取り専用です。

    信号の最小物理値。長さ NumSignals の数値ベクトルとして返されます。PhysicalMin の各要素には、SignalLabels の対応する信号の最小物理値が含まれます。

    データ型: double

    この プロパティ は読み取り専用です。

    信号の最大物理値。長さ NumSignals の数値ベクトルとして返されます。PhysicalMax の各要素には、SignalLabels の対応する信号の最大物理値が含まれます。

    データ型: double

    この プロパティ は読み取り専用です。

    信号の最小デジタル値。長さ NumSignals の数値ベクトルとして返されます。DigitalMin の各要素には、SignalLabels の対応する信号の最小デジタル値が含まれます。

    データ型: double

    この プロパティ は読み取り専用です。

    信号の最大デジタル値。長さ NumSignals の数値ベクトルとして返されます。DigitalMax の各要素には、SignalLabels の対応する信号の最大デジタル値が含まれます。

    データ型: double

    この プロパティ は読み取り専用です。

    信号のデータ単位。長さ NumSignals の string ベクトルとして返されます。Prefilter の各要素には、SignalLabels の対応する信号を前処理するために使用されるフィルターに関する詳細 (該当する場合) が含まれます。

    例: ["HP:10Hz LP:80Hz N:60Hz";"HP:0.1Hz LP:90Hz N:60Hz"]

    データ型: string

    この プロパティ は読み取り専用です。

    信号のサンプル数。長さ NumSignals の数値ベクトルとして返されます。NumSamples の各要素には、SignalLabels の対応する信号のサンプル数が含まれます。

    データ型: double

    この プロパティ は読み取り専用です。

    追加の信号情報。長さ NumSignals の string ベクトルとして返されます。SignalReserved の各要素には、SignalLabels の対応する信号に関する追加情報 (該当する場合) が含まれます。

    データ型: string

    信号データの入力サンプル タイプ。"digital" または "physical" として返されます。関数は、"digital" を既定とし、信号データをデジタル スケーリングなしでファイルに書き込みます。'InputSampleType'"physical" に設定すると、edfwrite は信号データにデジタル スケーリングを適用します。

    データ型: string

    注釈プロパティ

    この プロパティ は読み取り専用です。

    信号レコードに存在する注釈。次の変数を含む timetable として返されます。

    • Onset — 注釈が発生した時間。ファイルの開始時間から経過した秒数を示す持続時間として表されます。

    • Annotations — 注釈テキストを含む文字列。

    • Duration — 注釈によって記述されたイベントの持続時間を示す duration スカラー。ファイルで注釈の持続時間が指定されていない場合、この変数は NaN として返されます。

    データ型: table

    注釈をファイルに書き込むときに使用されるエンコード形式。"US-ASCII""UTF-8"、または "LATIN1" として返されます。

    データ型: string

    オブジェクト関数

    addAnnotationsEDF または EDF+ ファイルへの注釈の追加
    addSignalsAdd new signals to EDF or EDF+ file
    deleteAnnotationsEDF または EDF+ ファイルからの注釈の削除
    deleteSignalsEDF または EDF+ ファイルからの信号の削除
    modifyAnnotationsModify annotations in EDF or EDF+ file
    modifyHeaderEDF または EDF+ ファイルのヘッダー詳細の変更
    modifySignalsModify signals in EDF or EDF+ file

    すべて折りたたむ

    EMGdata.mat をワークスペースに読み込みます。このファイルには、8 つの腕の筋肉で記録された、8 チャネルの表面筋電図 (EMG) データ[1]が含まれます。データは、www.sce.carleton.ca/faculty/chan/index.php?page=matlab から入手できます。サンプル レートは 1000 Hz です。信号をプロットします。

    load EMGdata
    
    fs = 1000;
    t = 0:1/fs:(size(data,1)-1)/fs;
    stackedplot(t,data)

    Figure contains an object of type stackedplot.

    信号振幅の増大のバーストは、前腕の異なる運動 (それぞれ 3 秒間続く) に該当します。EMGindex.mat には、各運動の運動タイプと開始インデックス (サンプル) が 2 つの変数 motion および start_index として含まれています。運動タイプは次のとおりです。

    1. 手を開く

    2. 手を閉じる

    3. 手首を曲げる

    4. 手首を伸ばす

    5. 回外

    6. 回内

    7. 休止

    データをワークスペースに読み込みます。

    load EMGindex

    注釈の timetable を作成します。

    1. Onset を使用して行時間を指定します。Onset には、各運動の開始インデックス (秒単位) を格納します。

    2. Annotations は、運動のタイプを string 配列として指定します。

    3. Duration は、各運動の持続時間を秒単位で指定します。

    Onset = seconds(start_index./fs);
    Annotations = string(motion);
    Duration = seconds(ones(length(Onset),1)*3);
    
    annotationslist = timetable(Onset,Annotations,Duration);

    edfheader を使用して、EDF+ ファイルのヘッダー構造体を作成し、プロパティを設定します。詳細については、edfheaderを参照してください。

    hdr = edfheader("EDF+");
    hdr.NumDataRecords = 1;
    hdr.DataRecordDuration = seconds(length(data(:,1))/fs);
    hdr.NumSignals = 8;
    hdr.SignalLabels = ["F1" "F2" "F3" "F4" "F5" "F6" "F7" "B1"];
    hdr.PhysicalDimensions = repelem("mV",8);
    hdr.PhysicalMin = min(data);
    hdr.PhysicalMax = max(data);
    hdr.DigitalMin = [-32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768];
    hdr.DigitalMax = [32767 32767 32767 32767 32767 32767 32767 32767];

    ヘッダー構造体、信号データ、注釈を含む EDF+ ファイルを書き込みます。入力サンプル タイプを physical として指定します。ファイルは、現在の作業ディレクトリに保存されます。

    edfw = edfwrite("armEMG.edf",hdr,data,annotationslist,'InputSampleType',"physical");

    ファイルに関する情報を表示します。

    edfinfo("armEMG.edf")
    ans = 
      edfinfo with properties:
    
                  Filename: "armEMG.edf"
               FileModDate: "14-Aug-2023 20:38:20"
                  FileSize: 4803836
                   Version: "0"
                   Patient: "1234567 F 14-Aug-2023 Patient_1"
                 Recording: "Startdate 14-Aug-2023 MW_1234567 MW_Inv_01 MW_Eq_01"
                 StartDate: "14.08.23"
                 StartTime: "20.38.20"
               HeaderBytes: 2560
                  Reserved: "EDF+C"
            NumDataRecords: 1
        DataRecordDuration: 300.03 sec
                NumSignals: 8
              SignalLabels: [8x1 string]
           TransducerTypes: [8x1 string]
        PhysicalDimensions: [8x1 string]
               PhysicalMin: [8x1 double]
               PhysicalMax: [8x1 double]
                DigitalMin: [8x1 double]
                DigitalMax: [8x1 double]
                 Prefilter: [8x1 string]
                NumSamples: [8x1 double]
            SignalReserved: [8x1 string]
               Annotations: [28x2 timetable]
    
    

    EDF ファイル アナライザーを使用して、ファイルに格納されている信号と注釈を表示できます。Signal Separation オプションを使用して信号を分けると、より適切な可視化を行うことができます。

    edfApp_EMG.png

    EDF+ ファイルを削除します。ファイルを残す場合は、以下のコードをコメント アウトします。

    delete armEMG.edf

    ヒント

    • 注釈のみを含む EDF+ ファイルを作成するには、NumDataRecordsNumSignals0 として指定し、DataRecordDuration は値 0 の duration スカラーとして指定し、さらに、すべての信号プロパティを空として指定します。

    • EDF ファイル アナライザー アプリを起動して、EDF または EDF+ ファイル内の信号を可視化します。

    参照

    [1] Chan, Adrian D.C., and Geoffrey C. Green. 2007. "Myoelectric Control Development Toolbox". Paper presented at 30th Conference of the Canadian Medical & Biological Engineering Society, Toronto, Canada, 2007.

    [2] 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.

    [3] 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.

    バージョン履歴

    R2021a で導入

    参考

    アプリ

    オブジェクト

    関数

    外部の Web サイト