Memorandums

知覚・認知心理学の研究と教育をめぐる凡庸な日々の覚書

HSP:刺激をランダムな位置に提示する

2009-07-04 | Education for 3,4年
先週あたりで、卒業論文の実験のための各学生のプログラム(HSP)がほぼできあがった。実験をはじめている学生もいるが、これまでのTipsを以下に。

(1)刺激を空間的にランダムな位置に提示する。いくつかの方法があるが、ここでは複雑な視覚刺激の場合を想定する。刺激セットをひとつに画像ファイルにして、そこからランダムに各刺戟を抽出して刺激系列をつくる。これを空間的に配置し、提示する。
1 刺激を縦あるいは横にならべる。以下例では8つを横にならべた画像ファイルを用意。
2 ランダムに並べかえる。
3 画面(n行、l列)に配置する。以下では、2行4列。

; make display
x=ginfo_dispx
y=ginfo_dispy
screen 0,x,y,1,0,0

a=8 ; Number of Stimuli
buffer 2 ; ID 2 に仮想ウィンドウに
picload "image4.jpg" ; 画像を保存
dy=100; height of one stimulus
dx=100; width

pc=4      ; 列数
pl=2 ; 行数
pn=pc*pl ; 提示画像数
dim st,pn ; 画像コード


gsel 0 ; ID 0 のウィンドウに、描画先指定

gosub *srnd  ; 並べ替え

repeat pn
st.cnt=buf.0.cnt
loop


; 提示
repeat a
if cnt<=3 {
pos x/2-2*dx+cnt*dx, y/2-dy
gcopy 2,0,dy*st.cnt,dx,dy } ; ID 2 の画像の ( 左上角 )位置から、幅 dx、高さ dy の範囲をコピーしてID 0 に表示
if cnt>3 {
pos x/2-2*dx+(cnt-4)*dx, y/2
gcopy 2,0,dy*st.cnt,dx,dy } ; ID 2 の画像の ( 左上角 )位置から、幅 dx、高さ dy の範囲をコピーしてID 0 に表示
loop

; 以下、反応取得、データ記録などの部分を追加

; 以下、ランダム化のサブルーチン
*srnd

n=8 // 変数nに乱数の個数と範囲を代入(n未満)
// 2次元配列bufの宣言(buf.0.xは数値格納用、buf.1.xは重複チェック用)
dim buf,2,n
randomize
repeat n
rd=rnd(n) // n未満の乱数を生成し、変数rdに代入
buf.0.cnt=rd // buf.0.cntに変数rdの値を代入
if buf.1.rd=1{ // もしbuf.1.rdの値が1であれば…
continue cnt // 3行目にジャンプ(cntの値を変更せずに再度乱数を生成)
}
buf.1.rd=1 // buf.1.rdに1を代入し、使用済みのフラグを立てる
loop
// 以下は画面への出力処理
;pos 0,0
repeat n
;mes buf.0.cnt
loop
return


(2)被験者番号などを入力して(させて)、データファイル名に追加する。

log=""
notesel log ; ログをメモリーノートパッドにとる

sbj=""
input sbj
objsel 0

repeat
 await
 stick key
 if key&32 :break ; enter キーで先へ
loop
cls

;実験部分
;

notesave "dataEx0"+sbj+".txt"

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする