前回、OpenBCIの脳波データはいろいろ分析するため非同期(リアルタイムには行わない)でやる方針にした。で、分析ツールとしてはMatlabが有名ですが、めちゃくちゃ高いので、同等のことができるフリーソフトであるScilabを使ってみた。まだ全然使いこなしていませんが、統計とか微積とかいろいろできる、数値演算ソフトのようです。
簡単なスクリプトでCSVを読み込んだり、FFTしたりグラフ化できるそうなので、前回サンプリングした脳波をFFTしてみました。
Scilabのアプリを起動してj簡単なコマンドを実行したところ。
CSVを取り込んで、グラフ化するスクリプト
(1秒分で250サンプリングなので、データ数は250としました)
x=linspace(1,250,250) // x軸用の配列を作る
y=csvRead("C:\home\xxx\conv_pick.txt") // CSVを読み込む
plot(x,y) // x,yのデータを使ってグラフ描画

yy=fft(y) // サンプルデータをFFT
yy_abs=abs(yy) // FFTデータを絶対値化
plot(x,yy_abs) // FFTデータを使ってグラフ描画


※2.4で割るのは間違っている。多分。今回はサンプリングレートとサンプル数が同じなので周波数変換時に補正は不要※だったら、本当に120Hzの信号か!? あるいは、、120Hzはサンプリング240Hzで取得できる最大周波数なのでノイズなのか??
■まとめ
脳波のサンプリングデータをFFTするには、まずフィルタでDC成分やAC電源のノイズを除去すべき。次は、、ScilabでDC成分除去やバンドパスフィルタ(ノッチフィルタ)を適用する予定。。
■補足
Scilabを理解するため、入門書を買った(ジュンク堂等でもあまり置いてないので、Amazonで半分あてずっぽうで注文)。届いたのを読んでみると、文法等の説明は1/5ぐらいで、あとは行列演算とか微積、統計での使い方であった。文法の説明がほとんどないのだけど、Scilabってあまり手続き的な使い方はしないということか。。データに対して関数による演算がメインだから?

- 作者: 赤間世紀
- 出版社/メーカー: 電波新聞社
- 発売日: 2009/08/18
- メディア: 単行本
- クリック: 8回
- この商品を含むブログ (5件) を見る
■ご参考URL
Scilabによるハイパスフィルタの例
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10109764350