ひたすらプログラムの解説です
currdir='E:\FaceEmoCh\FECStudy';
はカレントディレクトリを打ち込んで設定しておきます.
間違えないように初めに打ち込んでおいて,後は触らないようにします.
[ALLEEG EEG CURRENTSET ALLCOM] = eeglab;
pop_editoptions( 'option_storedisk', 1, 'option_savetwofiles', 1, 'option_saveica', 0, 'option_single', 1, 'option_memmapdata', 0, 'option_computeica', 1, 'option_scaleicarms', 1, 'option_rememberfolder', 1);
ALLEEG = eeg_checkset(ALLEEG); EEG = eeg_retrieve(ALLEEG, CURRENTSET);
①EEGLABの起動
②EEGLABのオプションから一度に一つだけデータをメモリ上に読み込む設定にする
これをしないと,大量にロードしたときその分だけメモリが必要になります.
30人,8条件,電極64極とかだと大変なことになります.
cd(currdir);
カレントディレクトリを設定しています.
なんでここに書いたんだろう.
別にもっと前でもいいはず.
allfiles=dir('*.set');
選択したディレクトリに入っているファイルをすべて参照する.
allfilesという構造体に,
name
date
bytes
isdir
datenum
というフィールドが作成され,
情報が格納されます.
これを使っていろいろできるわけです.
for n=1:length(allfiles) %すべての条件にあうファイルをロードする
プログラム中のコメントアウトにあるように,
すべてのファイルに対する処理であることを示しています.
for文開始で,次のendまで.
nというインデックスを,ファイルの数(length(allfiles))だけ
一つずつ増加させてすべてのファイルに処理をするようになってます.
loadname=allfiles(n).name; %ファイルの名前を取得してloadnameに格納
loadnameを使っていろいろ情報を引き出します.
なので名前がきちんとついていないとダメ.
dataname=loadname(1:42); %ファイル名の前42文字とする
EEG = pop_loadset( 'filename', loadname, 'filepath', pwd);
loadnameから拡張子を外してdatanameにしています.
拡張しぬきの文字数がここでは42ということです.
EEG = pop_loadset(...
は非常に便利でEEGLABを立ち上げなくても機能します.
これでデータをロードします.
pwdでは現在選択中のディレクトリということです.
EEG.filepath=pwd;
ExpName=loadname(1:9); %ファイル名の1-9文字で実験名を命名する
EEG.subject=loadname(11:15); %ファイルの前11-15文字で参加者名を命名する
EEG.condition=loadname(37:42);%ファイルの後ろから37-42文字で条件名を命名する
ここでloadnameから情報を引き出しています.
だからファイル名をきちんと書いておく必要があるんですね.
バラバラだとここでつまづきます.
というかまず一括管理は無理ですね.
[ALLEEG, EEG, CURRENTSET] = eeg_store( ALLEEG, EEG, 0 );
end
というわけでここまででfor文が終了.
データを読み上げて,対応する構造体に格納し,
endまできたら戻って次のデータ,
ということを全部のデータにやると,この次に進みます.
ALLEEG = eeg_checkset(ALLEEG); EEG = eeg_retrieve(ALLEEG, CURRENTSET);
[STUDY, ALLEEG] = std_checkset(STUDY, ALLEEG);
eeglab redraw
ここはほとんど大人の事情.
EEGLAB内でデータの調整をしています.
eeglab redraw
はこの後エラーが出るので,強制的にredrawで止めてます.
ここでredrawされるとポップアップが出るので,
ここで「Remove」を選択すると続きを処理します.
[STUDY ALLEEG] = std_editset( STUDY, ALLEEG, 'name', ExpName, 'filename', ExpName, 'updatedat', 'on', 'savedat', 'on' );
CURRENTSTUDY = 1; EEG = ALLEEG; CURRENTSET = [1:length(EEG)];
eeglab redraw
最後にstudyを保存して終了.
実験名がStudyファイルの名前になるようにしています.
自分でやりたい場合は,ExpNameを直接変更するとできます.
これでフォルダに実験名.studyというファイルができます.
これを作った良さは,また今度.
currdir='E:\FaceEmoCh\FECStudy';
はカレントディレクトリを打ち込んで設定しておきます.
間違えないように初めに打ち込んでおいて,後は触らないようにします.
[ALLEEG EEG CURRENTSET ALLCOM] = eeglab;
pop_editoptions( 'option_storedisk', 1, 'option_savetwofiles', 1, 'option_saveica', 0, 'option_single', 1, 'option_memmapdata', 0, 'option_computeica', 1, 'option_scaleicarms', 1, 'option_rememberfolder', 1);
ALLEEG = eeg_checkset(ALLEEG); EEG = eeg_retrieve(ALLEEG, CURRENTSET);
①EEGLABの起動
②EEGLABのオプションから一度に一つだけデータをメモリ上に読み込む設定にする
これをしないと,大量にロードしたときその分だけメモリが必要になります.
30人,8条件,電極64極とかだと大変なことになります.
cd(currdir);
カレントディレクトリを設定しています.
なんでここに書いたんだろう.
別にもっと前でもいいはず.
allfiles=dir('*.set');
選択したディレクトリに入っているファイルをすべて参照する.
allfilesという構造体に,
name
date
bytes
isdir
datenum
というフィールドが作成され,
情報が格納されます.
これを使っていろいろできるわけです.
for n=1:length(allfiles) %すべての条件にあうファイルをロードする
プログラム中のコメントアウトにあるように,
すべてのファイルに対する処理であることを示しています.
for文開始で,次のendまで.
nというインデックスを,ファイルの数(length(allfiles))だけ
一つずつ増加させてすべてのファイルに処理をするようになってます.
loadname=allfiles(n).name; %ファイルの名前を取得してloadnameに格納
loadnameを使っていろいろ情報を引き出します.
なので名前がきちんとついていないとダメ.
dataname=loadname(1:42); %ファイル名の前42文字とする
EEG = pop_loadset( 'filename', loadname, 'filepath', pwd);
loadnameから拡張子を外してdatanameにしています.
拡張しぬきの文字数がここでは42ということです.
EEG = pop_loadset(...
は非常に便利でEEGLABを立ち上げなくても機能します.
これでデータをロードします.
pwdでは現在選択中のディレクトリということです.
EEG.filepath=pwd;
ExpName=loadname(1:9); %ファイル名の1-9文字で実験名を命名する
EEG.subject=loadname(11:15); %ファイルの前11-15文字で参加者名を命名する
EEG.condition=loadname(37:42);%ファイルの後ろから37-42文字で条件名を命名する
ここでloadnameから情報を引き出しています.
だからファイル名をきちんと書いておく必要があるんですね.
バラバラだとここでつまづきます.
というかまず一括管理は無理ですね.
[ALLEEG, EEG, CURRENTSET] = eeg_store( ALLEEG, EEG, 0 );
end
というわけでここまででfor文が終了.
データを読み上げて,対応する構造体に格納し,
endまできたら戻って次のデータ,
ということを全部のデータにやると,この次に進みます.
ALLEEG = eeg_checkset(ALLEEG); EEG = eeg_retrieve(ALLEEG, CURRENTSET);
[STUDY, ALLEEG] = std_checkset(STUDY, ALLEEG);
eeglab redraw
ここはほとんど大人の事情.
EEGLAB内でデータの調整をしています.
eeglab redraw
はこの後エラーが出るので,強制的にredrawで止めてます.
ここでredrawされるとポップアップが出るので,
ここで「Remove」を選択すると続きを処理します.
[STUDY ALLEEG] = std_editset( STUDY, ALLEEG, 'name', ExpName, 'filename', ExpName, 'updatedat', 'on', 'savedat', 'on' );
CURRENTSTUDY = 1; EEG = ALLEEG; CURRENTSET = [1:length(EEG)];
eeglab redraw
最後にstudyを保存して終了.
実験名がStudyファイルの名前になるようにしています.
自分でやりたい場合は,ExpNameを直接変更するとできます.
これでフォルダに実験名.studyというファイルができます.
これを作った良さは,また今度.