忍者ブログ
おかげさまでspamコメントが増えてきましたので、一応コメントを承認制にしました。基本的には承認します。
[1] [2] [3]

twitterでもつぶやいていたんですが,.mファイルを.sciファイルにコンバートできたらいいよな,と思って,試してみました.あ,scilabはこのあたり(Scilab日本語版)からどうぞ.

それで,実はScilab 5.1.1では,(Mac OS Xでは)ツールバーにApplicationsという項目がありまして,そこの"Matlab to Scilab traslator"を使えば,お手軽にmファイルをsciファイルにコンバートできるようです.で,やってみたんですが….とりあえず説明を簡単に書きますと,Conversion modeでは,単一のファイル(左側)をsciファイルに変換するか,フォルダ内の全てのファイル(右側)を変換するかを選べます.Input fileでは,変換したいファイル(フォルダ内の全て,を選択している場合はそのファイルの入っているフォルダ)を選択します.一見,どのディレクトリにいても,ここでフルパスを指定するので,問題なさそうに見えますが,事前にカレントディレクトリを指定したファイル/フォルダのあるディレクトリにしておかないと,警告が出る気がします(別のことが原因かも?).Output directoryは,特に入力しなければInputと同様で,別のディレクトリに出力したい場合は,それを指定します.

Optionsの,Recursive conversion, Only double value used,Generate pretty printed code.は良くわかりません.%を使って検索できないので,困ります.だれかたすけて!笑.一個分かったのは,Verbose mode (Verboseというのは,冗長さ,という意味らしい)で,これはようするにmファイルをsciファイルに変換したログをどのくらい出すか,を意味していますので,とりあえず3にしとけば間違いがないでしょう.

さて,ここまでやって,さて変換!と思ったら,

Warning :
The identifier : FIFFT_STREAM_SEGMENT_STRUCT
has been truncated to: FIFFT_STREAM_SEGMENT_STR.M
という警告が出ました.多分,もともとのmファイルのファイル名が長過ぎるので,途中削りましたよ,という意味でしょう.ひとつの変数で,他の変数を呼び出す場合が多々あるので,この長い文字のファイルが,他のファイルに引っかかっていれば多分呼び出しに失敗するでしょう.ということで残念ですが,やはり地道にmatlabで,コツコツ理解していこうと思います.


拍手[3回]

PR

今のmatlab 7.5.0(win)は、カレントディレクトリウインドウでフォルダを右クリックすると、そのフォルダを勝手にmatlabpathにくわえてくれるんですね。べんりー。で、fieldtripとMNEのmatlab toolboxのフォルダをダウンロードして(場所とかはそのうち書きます)、両方のフォルダにパスを通しまして、hdr = read_header(filename)とすると、ちゃんとデータを読み込めていることがわかりました!やっほう。すごい細かいtipsかつ業界人には常識かもしれませんが、(filename)というのは、含意としては、('filename')、つまり、シングルクオーテーションで囲む必要があるのですね。こんなところで躓いたぜ。

カレントディレクトリの中にfifファイルがあるとして、名前が、date_subjectname_condition.fifとかだとすると、hdr = read_header('date_subjectname_condition.fif')としないと読み込んでくれないのですね。笑うかもしれませんが、文系にはつらいんです。

拍手[0回]

とりあえずMatlabにMNE softwareを導入する方法だけ.まず,MNE softwareのページから,Licence Agreementを経て,自分のemailを登録します.そうすると,メールにpasswordがついて届くので,はじめのページで登録したE-mailと送られてきたpassを入力して,ダウンロードします.とりあえずfif fileを読むだけなら,matlabのツールボックスだけで良さそうなので,(一応Licence関係と,manual,そして)MNE-dist-matlab-version(2.6.5だった).tar.gzだけ落とせば良いでしょう.

それで,このファイルを展開したあとは,このツールボックスをMatlabに導入するわけですが,この方法はマニュアル(243ページ)によれば,

1. Copy the file $MNE_ROOT/matlab/toolbox/mne_setup_toolbox.m to a directory which is already on your Matlab search path, for example, $HOME/matlab,
2. Add the line mne_setup_toolbox to your $HOME/matlab/startup.m file.
このどちらか,ということになっているようです.

ちなみに,$というのは,ようするに,この前に何があるかは知らんけど,というくらいの意味.MNE softwareのページから落としてきたファイルをどこに保存するかによって,前にどんなディレクトリがあるかは変わるわけだから,わからないでしょ,ということなんだけど,これは以前TEXを導入するときにかなりつまづいた部分なので書いておきます(多分,業界(?)では常識なんだろうけど,トーシロにはわかんねーんですよ).閑話休題.

MNE-dist-matlab-version(2.6.5とか).tar.gzのファイルを展開すると,MNEというフォルダが出来て,そこからmatlab>toolbox>と辿って行くと大量のmファイルの中に,確かにmne_setup_toolbox.mというファイルがあります.1の方法は,これを,もうMatlabのパスが通っているディレクトリにいれればOK,ということ.パスを通すって言うのは,ずっと前に書きましたが,基本概念はこのエントリあたりをご参照ください.2の方法は,matlabの場合は,addpath 'directry' (それこそ,addpath c:/usr/mne/matlab/toolbox/ とか.バックスラッシュだったっけ?)で指定してやればパスが通るんですが(つまり,毎回手動でパスを通す,というのも方法のひとつではある…ということ.面倒だし間違いも起こりやすいので,1か2を選ぶべきと思いますが),startup.m ファイルは,その名の通りmatlab起動時に読み込まれるファイル(多分)なので,ここに,$MNE_ROOT/matlab/toolbox/へのパスを加えておけばそれだけでOKということですね.

拍手[0回]

FC dondersのページがいつのまにか変わっていたので,もう前の記事のことは忘れてください.新しいページは,こちら.我々はNeuromagのソフトを使っているので,Getting started から,with neuromag data をみると,Elekta-Neuromagシステムでとったデータは,*.fifファイルで記録されている(詳細はこのへん参照)ので,Matlabでそのデータをロードするためには,Matti HämäläinenによるMatlab toolbox,MNEソフトウェアを使う必要がある,と書いてあります.MNEソフトウェアは,このページダウンロードできるようです.

ここまで無事に終わり,fieldtripとMNE softwareのパスが通れば,次のようにタイプするとデータを読み出すことができる,とありますが,とりあえず今日はここまで.明日データを取るので,うーん,あさってくらいに,まずfieldtripとMNE softwareを落として,データの読み出しをしてみます.続く!

拍手[0回]

tutorial:preprocessing
の粗訳です。

前処理は、データセットからの個々のトライアルを同定し、フィルタリングをし、アーティファクトを除去することを含むいくつかの手順に関わります。このセクションでは、トリガ信号を用いて、どのようにトライアルを同定するかをカバーしています。ひとつのトライアルを決定する基準は、様々な方法によってなされます。
より高いの柔軟性はあなたの決めたトライアルの機能を要求しますが、与えられたトリガー信号によってそれは単純に行われます(?)。

The data set

データセットの記述は、Introductionを参照してください。

Trial definition

FieldTripのDEFINETRIAL機能を使うことで、前処理のために読むであろうデータの断片を定義できます。トライアルは、それらの開始と、データファイルにおけるサンプルの終わりによって定義され、各々のトライアルはそのトライアルのt=0点(普通、刺激-トリガの点です)によって決められたオフセットを持ちます。
FIC条件のためのトライアル定義をするために:


cfg = [];
cfg.dataset = 'Subject01.ds';
cfg.trialdef.eventtype = 'backpanel trigger';
cfg.trialdef.eventvalue = 3; % FICのための刺激トリガの値
cfg.trialdef.prestim = 1;
cfg.trialdef.poststim = 2;

cfg = definetrial(cfg);


このようにコマンドを書きます。

cfg.trlの結果には、rawデータの開始に関係する開始、トリガオフセットおよび各々のトライアルの終わりが定義されています。

Preprocessing

DEFINETRIALの出力は、PREPROCESSINGに利用できます。



cfg.channel = {'MEG' 'EOG'};%MEGのチャンネル数と、EOGに使ったチャンネル番号を入れる?

dataFIC = preprocessing(cfg);
save PreprocData dataFIC %前処理の結果を、dataFICというファイル名で保存する


前処理(PREPROCESSING)の出力は、次のフィールドのdataFIC構造です。



dataFIC =

cfg: [1x1 struct]
hdr: [1x1 struct]
label: {152x1 cell}
trial: {1x87 cell}
time: {1x87 cell}
fsample: 300
grad: [1x1 struct]


もっとも重要なフィールドは、個々のトライアルを含むdataFIC.trialと各々のトライアルの時間ベクトルを含むdataFIC.timeです。一つのチャンネル(130ch)における一つのトライアルデータ(Trial 1)を視覚化したのが、次の図です。



trial1 = dataFIC.trial{1};%dataFICに含まれる、trialという変数の1つ目の行列データを、trial1という名前の変数に代入する
plot(dataFIC.time{1}, trial1(130,:)) %dataFICに含まれる、timeという変数の1つ目をx軸に、さっき設定したtrial1(には、全てのチャンネルのデータが格納されている)の130行目(行がchに対応している)のはじめから終わりまで(:というのは、1:endと同義)をy軸にして、図を描いてね、という命令


図は本家を参照してください。

今日はここまで。
ようするに、cfgの中に、被験者データを入れる→それを、「前処理(preprocessingファンクション)」してセーブ
しろ、ということですね。そうすると、その中に入っているデータを使えるみたいです。
これの具体的なやり方は、後で実際にやってみないとわからないかなー、という感じですね。

拍手[0回]



忍者ブログ [PR]
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
メールはこちらから
プロフィール
HN:
渡辺隼人
性別:
男性
ブログ内検索
カウンター
コガネモチ