数値データの取得
5×10の乱数配列を作成します。
(setq a (random-matrix 5 10))
Enterキーを押します。
作成した配列は
(print-array
a)
で確認します。
Graph termに#m((….)(…)…(…))という形式で表示されています。
乱数は0〜1ではないようです。
(matrix-extent
a)
範囲が表示されました。
aを0〜1に収まるようにします。
matrix-srcを選択し、mtxという名前にします。
5×10では少ないので5×1001にします。
(setq a (random-matrix 5 1001))
(setq a (/ a (second (matrix-extent a))))
(set-resource
(G-widget "mtx") :matrix a)
mtxとdisplayを繋ぎます。
ScaleのAutoscaleをクリックします。
サンプリング周波数を100Hz、単位を秒にし、mtxとdisplayを繋ぎなおします。
(set-resource
(G-widget “mtx”) :x-scale 0.01 :x-unit “s”)
Offsetを0.5にします。
(set-resource
(G-widget "display") :offsets #m((0.5)(0.5)(0.5)(0.5)(0.5)))
任意の時間帯を選択し(ここでは白黒反転)、以下のコマンドを打ちます。
(setq b (get-selected-data :source (G-widget
"display")))
(print-array
b)
Graph termに数値データとして出力されています。
Graph termで表示しきれない場合、fiffで保存してテキストファイルに変換します。
make-evoked-fileというコマンドを使います。コマンドの使い方は
(describe
‘make-evoked-file)
などとすると
こんな感じで教えてくれることがあります。
(make-evoked-file
:source (G-widget "display") :selection (x-selection) :filename
"test.fif")
test.fifという名前で保存します。ここでx-selectionは選択範囲の時間を出力します。
terminalを開き、
/neuro/bin/util/fiff2ascii test.fif
と入力するとtest.01.ascというファイルが作成されます。
geditで開いてみます。
数値データとして出力されました。
source-mtxは要らないので削除します。
(GtDeleteWidget (G-widget “mtx”))
test-source widgetを作成し、testという名前にします。
frequency は2とします。
testとdisplayを繋ぎます。
Scaleは1にしています。modeがsinなので正弦波になっています。
同じようにnoiseという名前のtest-sourceを作成し、modeはrandomにします。
noiseとdisplayを繋ぎました。
randomのamplitudeは1の筈なんですが、確かめてみます。
答えです。
このままいきます。
次にfmul1とfmul2という名前のunary widgetをつくります。
fmul1もfmul2もfunctionはfmul、argumentsは0.2と0.4です。
次にfadd1とfadd2という名前のbinary widgetを作ります。
fadd1もfadd2もfunctionはfaddです。
setという名前のselector widgetを作成します。
noiseとfmul1を繋ぎ、noiseとfmul2を繋ぎ、testとfadd1、fmul1とfadd1を繋ぎ、testとfadd2、fmul2とfadd2を繋ぎます。
fadd1とsel、fadd2とselを以下のコマンドを入力して繋ぎ、selとdisplayを繋ぎます。
(select-to (G-widget "sel")(fadd1 0)(fadd2 0))
scaleを1.5にし、ch-label-spaceを100にしました。
(set-resource (G-widget "display") :scales #m((1.5)(1.5)) :ch-label-space 100)
上は正弦波に雑音を20%の振幅にして、下の波形は40%の振幅にして加算したものです。