Memorandums

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

PsychToolBox 0 インストール、特徴、使用の留意点

2005-06-22 | PsychToolBox
PsychToolBox 0 インストール、特徴、使用の留意点

 PsychToolBoxについては下記のサイトを直接参照する方がよいが、初心者の学習の便を考慮して簡単に特徴とインストールなどの際の留意点をあげておく。
 Psychophysics Toolbox(以下、PsychToolBox)は、MATLAB環境で動作する心理学実験プログラム、特に感覚知覚の精神(心理)物理学的実験のプログラムを作成するための関数のライブラリ(ToolBox)である。PsychToolBox自体はフリー(無料)であるが、MATLABはやや高額である。ただし、学生であれば、1万円ほどでStudent Versionを購入できるはずで、当面これで十分だろう。MATLABについて詳しくは別項を参照してほしい。
 さて、PsychToolBoxの特徴は、まず心理学実験に必要充分な動作精度をもつプログラムを、比較的短期間に作成することが可能である点にある。基礎的なエンジンはC言語で作られているが、PsychToolBoxでプログラムを作成する側は、当面C言語を知っている必要はない。作業自体をみれば、表面的にはむしろ80年代のBasicに近いといっても良いかもしれない。実行もMATLABがそもそもインタプリタ型であるから、結果を容易に確認することができる。プログラミング経験者ならば、数週間でPsychToolBoxおよびMATLABの学習と目的の実験プログラムを書くことが可能、とされている。
 心理実験に有用なサンプルが付属していることも学習、プログラミングを助けてくれる(George Sperling も指摘しているとおり)。近年の視覚研究に欠かせないGratingの作成や、基礎的な精神物理学的測定法、反応時間の測定なども用意されているので、これらを組み合わせることからプログラミングを始めることができる。
 Mac版とWindow版があり、コードにおいては両者はほぼ共通するので互換性の点でもメリットがある。ここではMac版をインストールすることを例に、具体的に留意点をあげておこう。Mac版にはOS9とOSX用がダウンロード可能になっているが、OSX環境下でもOS9環境とX11を使うことができれば、OS9用のPsychtoolbox Mac 2.55 (12 March 2005) を利用することができる。OSX用は開発途上のようだ。
 この場合,OSXのHDの中のApplications(OS9)フォルダにMATLABフォルダをおき、さらにその中のtoolboxフォルダ内にpsychtoolboxファルダをおくことに留意しておきたい。さらにこのpsychtoolboxにパスを設定することを忘れずに。pathの設定はmenu barからFile-->set pathで可能。
インストールが終了したら、まずはMATLABのコマンドプロンプトから
>>MovieDemo
と入力して動作を確認してみよう。以下、
>>help psychdemos
でサンプルのリストを確認できるので、ファイル名を直接入力すれば実行を確認できる。また例えば、
>>edit MovieDemo
でコードを見る(編集する)ことができる。
 なお、MATLAB自体の具体的な操作は、下記の入門サイトなどを参照のこと。

References
Psychophysics Toolbox: Use Matlab to do vision research
By David Brainard, Denis Pelli and Allen Ingling
http://psychtoolbox.org/

Introduction to MATLAB
Kawatani Lab. at Fukui Univ.
http://feedback.mech.fukui-u.ac.jp/matlab/matlab0.htm

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

MATLAB 2 プログラムの作成

2005-06-22 | MATLAB
MATLAB 2 プログラムの作成

 MATLAB では複数のコマンドを集めてプログラムを作成することができる。
プログラムは大別して,スクリプト(Script)とファンクション(Function) に分けることができる。

<スクリプト>
 MATLAB では % 以降の文はコメントとして見なされる。これは MATLAB のプログラムにおいては,重要な意味を持つ。MATLAB はオンラインヘルプ機能により指定し た関数の使用法等を確認することができるが,実は最初のコメント文がその関数のヘルプとして画面上に表示される。 したがって,プログラムを作成した本人がそれに対するヘルプを簡単に作成することができる。

 プログラムをテキストエディタで作成して,適当なファイル名でセーブ。 ファイル名の拡張子は必ず .m でなければならない。このために,MATLAB ではプログラムのことを M-file (エムファイル)と呼ぶ。ちなみに,ファンクションの場合も同様。したがって, エムファイルはスクリプトとファンクションの総称といえる。
 実行方法は簡単。MATLAB のプロンプトに対して,拡張子を除くファイル名を入力する。

<ファンクション>
 MATLAB は1行目でファンクションとスクリプトの判断。 1行目に functionがあればフンクション,そうでなければスクリプト。テキストエディタで作成した後,関数名と同じファイル名でセーブ。 その際に拡張子は .m 。実行は、MATLABのプロンプトで拡張子を除くファイル名と引数を指定。

References
川谷研究室(福井大学)MATLAB入門編
http://feedback.mech.fukui-u.ac.jp/matlab/matlab0.htm
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PsychToolBox  画面制御

2005-06-22 | PsychToolBox
PsychToolBox  画面制御

screen 関数の使い方例

>>help screen
で参照。以下にその一部を転載。
------
MOVIES ARE EASY

% make movie
window=Screen(0,'OpenWindow',0);
rect=[0 0 200 200];
for i=1:100
movie(i)=Screen(window,'OpenOffscreenWindow',0,rect);
Screen(movie(i),'FillOval',255,[0 0 2 2]*(i-1));
end;
% show movie
for i=[1:100 100:-1:1] % forwards and backwards
Screen('CopyWindow',movie(i),window,rect,rect);
Screen(window,'WaitBlanking');
end;
Screen('CloseAll');
------
Screen ARGUMENTS

"windowPtr" argument: Screen 'OpenWindow' and 'OpenOffscreenWindow' both
return a windowPtr, a number that designates the window you just
created. You can create many windows. And you can obtain a windowPtr to
any of Matlab's windows. To use a window, you pass its windowPtr to the
Screen function you want to apply to that window.

"rect" argument: "rect" is a 1x4 matrix containing the upper left and
lower right coordinates of an imaginary box containing all the pixels.
Thus a rect [0 0 1 1] contains just one pixel.
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PsychToolBox 心理実験サンプル

2005-06-22 | PsychToolBox
PsychToolBox 心理実験サンプル

>>help psychdemos
によって、かなりのサンプルを参照できる。基本的なものには*印が付されている。
ただし、刺激作成、提示、反応入力、記録(出力)という実験の全体を概観するにはやや不適かと思われる。
そのためには、

>>help Psychtoolbox:PsychContributed
の中の、
>>edit MinimalExample
>>MinimalExample
を実行してみるとよい。(前者がコード画面表示、後者が実行)
刺激作成、提示(時間制御)、反応記録(RT)が簡単に概観できる。
以下に、その一部を転載(画面を3s 提示)。
%以下はコメントで実行には関係しない。またコピーとペースで改行などの情報が混入することがあり、以下をそのままテキスト編集してm-fileに(拡張子.mで)保存しても、エラーがでることがあるので、実際のサンプルを直接参照、実行してほしい。
-----
clear all;

pixelSize = 8; % You might change to 32 if 8 is not working, depending on OS9 or Windows.
[w, screenRect] = Screen(0,'OpenWindow',[],[],pixelSize); % Define your output screen as your monitor which is screen 0.
black=BlackIndex(w); % Value depends on pixelSize.
white=WhiteIndex(w); % "

scr_one = Screen(w, 'OpenOffscreenWindow',black, screenRect); % Define scr_one, a black screen not yet visible.
screen(scr_one,'FillOval',white,[10,10,90,90]); % Draw a white circle on scr_one.
screen(scr_one,'DrawText','White circle, diameter 80 pixels. Presented for 3 seconds.',10,150,white); % Draw text on scr_one.

scr_two = Screen(w, 'OpenOffscreenWindow',black, screenRect); % Same for scr_two as scr_one.
screen(scr_two,'FillRect',(black+white)/2,centerRect([0 0 100 50],screenRect)); % Draw rectangle to scr_two.
screen(scr_two,'DrawText','Middle-gray rectangle, 100 x 50 pixels. Press any key to continue.',50,200,(black+white)/2);

scr_blank = Screen(w, 'OpenOffscreenWindow',black, screenRect); % scr_blank is just a black screen.

% Scr_one for 3 seconds.
Screen(w,'WaitBlanking'); % Wait for vertical sync signal before copying screen to monitor, not necessary.
Screen('CopyWindow',scr_one,w); % Copy scr_one to monitor.
starttime1 = GetSecs; % Record CPU time at this point.
while GetSecs-starttime1 <3 % Minimal while-loop that lets almost exactly 3 seconds pass. end
finishtime1 = GetSecs;
-----
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MATLAB 0 起動と終了、特徴、購入

2005-06-22 | MATLAB
MATLAB 0

MATLABの起動と終了、特徴、購入

これらについては以下のサイトを参照。
工学系のサイトなので、心理学専攻者は適宜読み飛ばしてよい。
行列の学習が必要ならば、川谷研究室サイトにその講義資料がある。

References
川谷研究室(福井大学)MATLAB入門編
http://feedback.mech.fukui-u.ac.jp/matlab/matlab0.htm
MATLABホームページ
http://www.cybernet.co.jp/matlab/
志賀研究室(岐阜大学)MATLABの使い方
http://www.ykt.info.gifu-u.ac.jp/shiga/matlab/

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

MATLAB1 行列、代入、変数

2005-06-22 | MATLAB
MATLAB 1
MATLAB初心者の教育・学習用にその基礎について下記サイトをもとにメモを残す。PsychToolBoxについて(インストール、心理実験サンプル、解説)は別項で。

◎行列、代入、変数

例1-1)
>> A=[0 0 1 0;0 0 0 1;0 0 -240 0;0 36.39 890.32 -0.022];
>> B=[0;0;90;-333.87];
>> C=[1 0 0 0;0 1 0 0];
>> D=[0;0];

配列宣言不要

行列の代入に関する注意点
1.行列の入力は [ から始まり ] で終了
2.入力は行の順に。1行の終了記号は ; (セミコロン) 。上の例では,行列 B が縦ベクトルとなる。
3.各要素の区切り記号は,コンマ(,) もしくは1つ以上のブランク
4.入力が終了した時点(] が入力された時点) で,各行の要素数が一致しない場合には, 対応するエラー表示が行われ,その変数に行列は代入されない。
5.要素を持たない空行列を aa=[]; により作成することができる。
6.] の後に単に CRキーを押すと代入結果がエコーバックされる。もし, エコーバックが不要な場合には ; (セミコロン) を入力

MATLAB の出力形式について
 MATLAB における演算はすべて倍精度で行われるが,演算結果はデフォルトでは スケーリングされた5桁表示が使用される。

行列要素の参照、代入
 行列の要素の参照は A(i,j) により行う。たとえば,
>> AA=[0 1;-3 -4];
>> AA(2,1)
この場合,行列 AA の2行1列目の要素(-3)が表示される。また,行列の要素への代入は
>> AA(1,1)=5.0;
で行える。なお,この際に,指定する位置が行列の大きさを越える場合には,自動的にその行列が拡大されて代入が行われる。 たとえば,
>> AA(3,5)=3

AA =

0 1 0 0 0
-3 -4 0 0 0
0 0 0 0 3
この結果からもわかるように,拡大された要素には 0 が代入される。
代入した変数は MATLAB のワークスペースという領域に保存される。
なお、
>>who
>>whos
で、ワークスペース内の変数(行列)の内容を表示できる。

変数名についての注意事項
デフォルトでは MATLAB は大文字と小文字の区別。たとえば,Aa,aA,aa,AA はいずれも異なる変数と見なされる。
変数名として最初にアルファベットでその後にアルファベット,数字,アンダースコアを利用できる。 なお,最初の19文字のみが有効。
MATLAB には予約語の概念がない。

プログラムを利用した行列の作成方法
 行列のサイズが大きい場合には,プログラム(スクリプト)を利用して入力すると 入力ミスに対しても対応が容易となる。
 例1-2)
適当なテキストエディタで次のプログラムを入力し

A=[0 0 1 0
0 0 0 1
0 0 -240 0
0 36.39 890.32 -0.022];

makea.m にセーブ。拡張子を .m としなければならないことに注意。
MATLAB 上でこのプログラムを実行する
>> makea
と行列 A がワークスペースに作成される。


References
川谷研究室(福井大学)MATLAB入門編
http://feedback.mech.fukui-u.ac.jp/matlab/matlab0.htm
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする