EEGLABをいじっていてエラーが出たので回避法を

EEGLABバージョンはv7.1.3.11bです.
バージョンアップで回避できるエラーかもしれませんが,
コマンドラインからの処理ということも兼ねて.

ICAをかけた後のデータで

Plot-Component activations (scroll)

から除きたいエポックを検討するときのこと.
Scrollの画面からピコピコ選んでリジェクトしようと思うと,
以下のエラーが出ます.

??? 割り当ての次元が一致しません

??? Error using ==> g = get(gcbf, 'userdata');TMPREJ = g.winrej;if g.children, delete(g.children); end;delete(gcbf);if ~isempty(TMPREJ), icaprefix = 'ica';

(中略)

割り当ての次元が一致しません

??? uicontrol Callback の実行中にエラーが発生


面倒なので直接リジェクトしてしまいます.

幸いにもこのエラーが出ても,
どのエポックを除去しようかとマークした情報は,

tmprej

という変数で保持されていました.

これを使ってEEGLABの関数を直接動かします.
ヘルプによれば以下.

Usage:
>> OUTEEG = pop_rejepoch( INEEG, trialrej, confirm)

Inputs:
INEEG - Input dataset
trialrej - Array of 0s and 1s (depicting rejected trials) (size is
number of trials)
confirm - Display rejections and ask for confirmation. (0=no. 1=yes;
default is 1).
Outputs:
OUTEEG - output dataset

Example:
>> data2 = pop_rejepoch( EEG, [1 1 1 0 0 0] );
% reject the 3 first trials of a six-trial dataset



なので

EEG=pop_rejepoch( EEG, tmprej, 1);

とやってしまえばOK.

これを応用すれば,
tmprejに削除したいエポックを1に,
それ以外を0にした行列をつっこんでやればリジェクトしてくれるようですね.

ちなみにリジェクトしたくてマークしたその行列は,
行使されるまで

EEG.reject

という構造体以下に格納されています.