差分トポなど②改造編の続きです


std_chantopo(...

はmファイルですから,

std_chantopo

とコマンドウィンドウに打ってやれば,
処理をしてくれるはずです.

しかしそれを適切に動かすには,

std_chantopo(erpdata, 'condnames', STUDY.condition, 'plottopo', fastif(length(allinds)==1, 'off', 'on'), ...
'datatype', 'spec', 'plotmode', opt.plotmode, 'groupnames', STUDY.group, 'unitx', '\muV', ...
'groupstats', pgroup, 'condstats', pcond, 'interstats', pinter, ...
'chanlocs', locs, 'plotsubjects', opt.plotsubjects, 'topovals', titlestr, plotcurveopt{:});

の括弧内にあるオプションを全部理解して,
適切なデータを引っ張ってこないといけません.

これはめんどい

そこで②で作ったmatファイルです.
先ほどの状態でstd_chantopoを動かすのに
必要な変数を全部保存しておいたんです.

これをMATLABワークスペース上にオープンしてやれば,
まさに

std_chantopo(erpdata, 'condnames', condition, 'plottopo', fastif(length(allinds)==1, 'off', 'on'), ...
'datatype', 'spec', 'plotmode', opt.plotmode, 'groupnames', group, 'unitx', '\muV', ...
'groupstats', pgroup, 'condstats', pcond, 'interstats', pinter, ...
'chanlocs', locs, 'plotsubjects', opt.plotsubjects, 'topovals', titlestr, plotcurveopt{:});

をそのままベタ貼りするだけで,
トポの表示ができてしまいます.

(ここでは元のプログラムを少し改変していますが,
conditionとgroupの前のSTUDY.を抜き取っただけです.
状況によってはSTUDY構造体が非常に重くなっている可能性があるので,
上記の対処を取りました.)

でもそれでは一度行ったトポ表示を繰り返すだけ.
今回は差分を行いたいわけですから,
表示するトポを各条件のモノではなく,
条件差のデータに変えたいということになります.

一目瞭然でわかると思いますが,

std_chantopo(...

のあとの一つ目の引数に

erpdata

というものがあります.

まさにこれがデータです.
中身をみるとセル扱いですが,
条件分のデータが格納されています.
3条件であれば,

DPSVOX.NKのブログ

< 3 x 1 cell >

です.

そのままでは使えないので

a=
erpdata{1};

のように抽出してみると,

1
x 64 x 13

のように,
1,電極,人数
の3次元データになっています.

あとは色々いじって差分にするなり,
なんなり(といっても差分意外にないか)できます.

3条件なら以下のスクリプトを通すと,
条件1-条件2,
条件2-条件3,条件3-条件1
の三つを出すようにできます.

for i=1:length(condition)
a(i).data=erpdata{i};
end
erpdata2=erpdata;
for i=1:length(condition)
if i==length(condition
), erpdata{i}=a(i).data-a(1).data;
else erpdata{i}=a(i).data-a(i+1).data;
end
end

erpdata2として元データを残しているので,
両方出して確認してみましょう.

上記を応用すればERP波形を書く,

std_plotcurve(alltimes, erpdata, 'condnames', STUDY.condition, 'plottopo', fastif(length(allinds)==1, 'off', 'on'), ...
'datatype', 'spec', 'plotmode', opt.plotmode, 'groupnames', STUDY.group, 'unitx', 'ms', ...
'groupstats', pgroup, 'condstats', pcond, 'interstats', pinter, ...
'chanlocs', locs, 'plotsubjects', opt.plotsubjects, plotcurveopt{:});

も同じように変数書き出し法で,色々できます.