ICALAB 実行

MATLAB上で
path(path,"..../ICALaBSPv2_2");
icalab;
とするとICALABが立ち上がります。

が、
size(who)
ans =
175 1
とMATLABのworkspace上に175個もの変数ができてしまいました。


早速以下の脳磁図データを読ませようと思います。SSP処理(雑音空間の除去)済み、gradiometer成分のみです。

メニューバーからファイル->開くを選択します。

Select DATA fileとでます。

ファイルしか認識しないようです。
脳磁図データをファイル形式で保存します。
save('test.mat','meg');
として、test.matを開こうとすると

とでました。icalab.htmlをみるとチャンネル数は160個まで だそうです。
固有値分解し、ランクを99に下げます。
[Veig,Deig]=eig(cov(meg'));
Veig=fliplr(Veig);
Peig=Veig\meg;
PeigS=Peig(1:99,:);
save('test.mat','PeigS');
としてデータを読ませます。因みに累積寄与率は
Deig=flipud(diag(Deig));
sum(Deig(1:99))/sum(Deig)*100
ans =
94.8845
です。

標本化周波数を入力し、単位をHzにします。

SELECT CHANNELSボタンを押すと、第1主成分から第99主成分が表示されます。

キャンセルボタンを押して、windowを閉じます。
次に、preprocessingボタンを押します。

preprocessing用のwindowと波形用のwindowの2つが開きます。

周波数フィルターなど、いろいろあります。 最初にLowpass Filtering (Butterworth)を選びました。

Displayにcheckを入れ、 低周波通過フィルターのcutoff frequencyを50/600.615=0.0083248として、Applyボタンを押します。

第1〜第99主成分の波形に周波数フィルターがかかりました。

次はもっと高機能なIIR/FIR Filter Design Toolを選びます。

右上のボタンをMagnitudeに、 Frequency Rangeを300.3075Hzに、 Filter styleをBandpassに、 IIR Filterを選び、 Filter orderを4とし、 Fc1とFc2を140にし、Applyボタンを押します。
1〜40Hzの帯域通過フィルター処理後の第1〜第99主成分が表示されます。

OKボタンを押してpreprocessingを終了します。
Algorithm nameを選択します。

JADEやFastICA以外にもいろいろありますが、defaultのAMUSEを選ぶこととします。
RUN ALGORITHMボタンを押します。

MATLABのcommand windowに

と表示され、終了しました。99チャンネルの独立成分分析が0.28秒!。 桁違いの速さです。
Output signalsのViewボタンを押します。

表示画面の選択windowがでてきます。defaultのままとし、OKボタンを押します。

PLOTボタンを押すと、選択した4つの画面が表示されます。
Sources画面

Mixed signals画面

Estimated Sources(independent component)画面

Global matrix画面 -Performance Index=0.239775・・・???

うまく独立成分に分けられているかどうかわかりませんが、とりあえず保存します。 SAVEボタンを押し、Matlab file (*.mat)を選択し、test_ica.matという名前で保存しました。