忍者ブログ

めもめも ...〆(。_。)

認知心理学・認知神経科学とかいろいろなはなし。 あるいは科学と空想科学の狭間で微睡む。

2017/10    09≪ 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  31  ≫11
Psychtoolbox勉強会でミュラーリヤー錯視のデモをやったので復習。
勉強会でも紹介されてたサイト
http://sites.google.com/site/ptbganba/mullerlyerno-sanpuru-puroguramu-wo-yomitoku
と自分の殴り書きめもを見ながら復習していく。

まあ中味の解説は上のサイトのとおりなんだけど。
他の実験にも応用できて参考になりそうなとこや勉強会で躓くひとが出たところをめもっておく。

長いので続きのとこにしまっておく。




まずはMファイルを開こう。
Psychtoolboxのフォルダ->PsychDemos
->PsychExampleExperimentsで辿りつける。

AssertOpenGL;
OpenGLというやつをつかうときに必要。
OpenGLというのはなんかMRIのときにも聞いたことがあるような気がするが、なんか画面をどうにかするものらしい。
とりあえずこのへんの勉強は未来の自分に丸投げ(いつものスタンス)。
今のところは「最初にこれ書いとけ」でいいや。

function results = MullerLyerIllusion(subID)
結果を保存する変数。
VBと違ってMATLABの便利なところは、変数型をあらかじめ宣言しなくていいところ。
逆に言うと変数の初出がどこだったか一瞬混乱するところ。
(わたしの初めてのプログラミングがVBだったので、基本的にVB知識をベースとした理解になります。あしからず)
んで、これを記述しておいてコマンドウィンドウで
MullerLyerIllusion(12)
と入れたらよい。

で、

if ~exist('subID','var')
    subID=66;
end

という記述で、何も入力がなければIDを66にするという設定が作られる。
デフォルトの数字が悪魔的なのは上記サイトでも勉強会でも解かれない謎だった。

ちなみに、
exist('変数','値')
で、変数が指定した値であるかどうか(一致しているか)を確認する。
このvarは分散とかじゃなく、単に何か値が入っているかどうかを確認するもののよう。
(おそらくはisvarnameとかいうのに使われてるのとおんなじ意味合いなんじゃないかと)

んで、前ににょろん(チルダというらしい)がついていると、関数の意味が逆になるらしい。
つまり
~exist('変数','値')
は変数と値が一致してないかを確認するわけだ。
つまり、subIDに値が入ってないと次の行を実行するよ、というわけだ。

次の

fileName=['MLIexpSubj' num2str(subID) '.txt'];

ログファイルを作る。
つまり、fileName=[ファイル名]でファイルを作成できる。

この後にファイル名がこれまでとかぶってないかどうかを確認するくだりがあるんだけど、オクターブ環境のと場合わけがしてあるので、まあ便宜によって削ったり削らなかったりしよう。

んで、num2str(変数)で、変数の数字を文字列型に変換する。
ということはsubIDんときに数字以外をつっこむとエラーを吐く仕様になっていると思われ。
(だったら最初っから文字列型の変数にしたらいいのに、と思ったけどMATLABは文字列型をいじるの苦手なんだろうか?)

date
日付呼び出し。

ntrials=
試行数きめる。

このデモでは、
ntrials=size(condtable,1);
というのをつかっている。
sizeというのが行列のlength取得みたいなかんじ。
condtableというのは行列のことで、(condtable,1)が行、(condtable,2)が列のことを指すみたい。

randperm(変数)
で変数の中味をランダムに並び替える。
なんかMATLABで変数を作成するときに注意しないとランダマイズがおんなじになる場合があるよ、と昔先輩が話していた記憶があるが、昔過ぎるわそのときMATLABさわってなかったわで詳細不明。
あとでランダマイズについて調べること>自分

ceil(値)
は小数を切り上げでまるめて整数にする。変数型まで面倒みてくれるのかは不明。
(検証さぼり)

colHeaders = {いろいろ};
でヘッダの指定。

results=NaN * ones(length(order),length(colHeaders));
で結果をしまう行列を作成。
NaNは不定値らしい。よーするにてきとーな値ってこと?

ones(行,列)
は要素が1で指定した大きさの行列をつくる。

length()は行ベクトルの長さ取得。
sizeとの違いが気になったけど、sizeは行列の大きさで、lengthはベクトルの大きさなんじゃね、と類推。

KbName('UnifyKeyNames');
キーコードをMac OSのに統一するらしい。
Mac信者か。
とか思ったけど、まあキーコードなんて混乱のもとだから素直に従う。

ListenChar(2);
コンソールへの入力をシャットアウトする。
つまり実験中に余計なところをいらわんようにするわけですな。
ただしシャットアウトにしたまんまだと詰む(強制終了しかなくなる)ので、実験終わった後には必ず
ListenChar(0);
をいれておこうね。コンソール入力がオンになるよ。
あとCtrl+Cでもオンになるらしい。

スクリーン(画面)設定は
http://sites.google.com/site/ptbganba/mullerlyerno-sanpuru-puroguramu-wo-yomitoku/kaisetsu-2
をよく読め。

Screen('Flip', スクリーン名);
はVBでいえばHide Form1とShow Form2みたいなかんじ。
一行で書けてべんりね。

KbWait([], 3);
で、キーを押して離すまで待て、と。
[]のなかみが空白ならデフォルトの設定。
,のあとが1だと、押した瞬間までで、2だと離した瞬間まで待て、ということらしい。
ボタン押しっぱなしになる実験とかでつかうのかな。
http://sites.google.com/site/ptbganba/ptbno-komando-no-setsumei/kbwait
参照。
WaitSecs(0.2);KbWait
とかはべんりそうだ。

ちなみにMATLABの時間単位は基本的にSecらしいので気をつけよう。
VBはたしかmsecだったと思うが、そのわりに時間制御がてけとーなのはご愛嬌。

Screen('MakeTexture')はOpenGLでの描画のための関数みたい。
画像読み込みじゃなくて直接描画するほう。
Screen('DrawLine',描画するスクリーン名,色,水平方向の開始点,垂直方向の開始点,水平方向の終了点,垂直方向の終了点);
で線を描いてくれるようだ。

Screenのコマンドどんなのがあるかは、ヘルプじゃなくて単純に
Screen
とMATLABのコマンドウィンドウにうちこむといろいろ出てくる。

Waitsec(数値)
で数値秒ぶん待機。

resptimeで時刻を取得。
StimulusOnsetTimeで刺激描画時間を取得。
よって

rt=resptime-StimulusOnsetTime;

で反応時間が算出される。

keyCodeで押されたキーのキーコードを取得。
kbName(keyCode)
でキーの名前を出力。

isempty(変数)
は、変数のなかみが空だったとき。

break;
は強制終了。

strcmp(変数,変数)
は変数が一致するかどうか

だいたいそんなかんじか。
基本上のサイト見ればなんとかなるなー。


これの反応取得と結果ログの方法のとこはどんな実験にも流用できそうだから、刺激提示の方法をちょっと調べて見よう。
この記事にコメントする
              
お名前
タイトル
メールアドレス
URL
カラー
絵文字 Vodafone絵文字 i-mode絵文字 Ezweb絵文字
コメント
非公開 管理人のみ閲覧できます
パスワード   
* コメントの編集にはパスワードが必要です
この記事にトラックバックする
トラックバックURL:
カレンダー
09 2017/10 11
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 31
カテゴリ説明
もっさり:日々の雑感をもっさり。
がっつり:論文や研究関連をがっつり。
びっくり:科学ニュースでびっくり。
まったり:空想科学などでまったり。
ばっかり:デザイン系自己満足ばっかり。
ほっこり:お茶を嗜んでほっこり。
最新コメント
※SPAMが多いのでhttpを含むコメントと英語のみのコメントを禁止しました※
[05/07 ぱるぱる]
[05/06 ぱるぱる]
[05/06 ぱるぱる]
[08/29 初見名無し]
[06/25 あ]
最新トラックバック
プロフィール
HN:
az
性別:
非公開
自己紹介:
興味のあるトピックス
 分野は視覚認知。視知覚にがて。
 あと記憶全般。
 カテゴリ (semanticsか?) とかも。
 最近デコーディングが気になる。
 でも基本なんでもこい。
 好奇心は悪食。

好きな作家(敬称略)
 川上弘美
 小林秀雄
 津原泰水
 森茉莉
 レイ・ブラッドベリ
 イタロ・カルヴィーノ
 グレッグ・イーガン
 シオドア・スタージョン
バーコード
ブログ内検索
カウンター
フリーエリア
PR
<< Back  | HOME |   Next >>
Copyright ©  -- めもめも ...〆(。_。) --  All Rights Reserved
Designed by CriCri / Material by もずねこ
忍者ブログ  / Powered by [PR]