您當前的位置:首頁 > 舞蹈

心理學研究方法——基於matlab和psychtoolbox(1)

作者:由 一個廢松鼠 發表于 舞蹈時間:2020-03-24

2。3MATLAB程式設計基礎

2。3。1程式的建立

一、指令碼檔案

二、函式檔案

1永久性函式

透過function語句指引,格式為:

function[out1,out2,。。。] = FunName(input1,input2,。。。)

FunName是函式的名字,function是函式的返回值。out1,out2等變數為輸出引數列表;input1,input2等變數為輸入引數列表。

2臨時性函式

1)行內函數

行內函數由inline函式建立,格式如下:

FunName = inline(‘expression’,‘arg1’,arg2‘,。。。)

FunName是函式的名字,expression為函式的表示式,arg1和arg2等為輸入變數。

2)匿名函式

匿名函式透過符號“@“表示函式指標(函式控制代碼),格式為:

FunName=@(arg1,arg2,。。。)expression

3子函式

function z = mainfunction(x,y)

z = subfunction(x,y)+x*y;

end

function m = subfunction(x,y)

m = sqrt(x^2-4*y);

end

4函式的遞迴

函式在函式的內部進行呼叫

eg:n的階乘

function m = recursion(n)

if n <=1

m=1;

else

m = n * recursion(n-1);

end

2。3。2程式的除錯

一、簡單程式的除錯

1將可能出錯的語句後面的分號”;“去掉,讓其返回結果。

2如果需要除錯的是一個函式檔案,由於函式檔案中的變數都不會儲存在工作空間內,因而不利於我們檢視變數的取值。可在程式適當位置新增keyboard指令,增加程式的互動性。程式執行到keyboard時會出現暫停,命令視窗的命令提示符”>>“前會多出一個字母K,此時使用者可以很方便地檢視和修改中介變數的取值。在”K>>“的後面輸入return指令,按回車鍵即可結束檢視,繼續向下執行原程式。

3clear (clear all)

二、設定程式斷點(breakpoint)

心理學研究方法——基於matlab和psychtoolbox(1)

紅色圓點為斷點(斷點所在行命令不執行)

2。4實驗設計常用MATLAB函式

一、設計實驗試次——隨機函式

1產生隨機數或隨機矩陣:

(1)rand:生成[0,1]浮點隨機數

eg:

rand

rand(2,3)

rand(2)

(2)randi:生成[1,n]之間均勻分佈的隨機整數

randi(100)

randi(10,2,3)

10為n,2,3為矩陣行列

randi(10,2)

(3)randn:生成標準正態分佈的隨機數

*設定隨機種子

rand(’seed‘,seed)

2將序列進行隨機排列

(1)randperm:生成一串1到n的隨機排列(對數列進行排列)

(2)Shuffle:對陣列或者矩陣進行排列

二、編寫實驗刺激——特殊矩陣、矩陣操作、字元操作

1生成特殊矩陣的函式

zeros:零矩陣 ones:一矩陣 eye:單位矩陣 diag:對角矩陣 rand:隨機矩陣 randn:隨機整數矩陣 magic:魔方矩陣

zeros:零矩陣 zeros(2,3) zeros(2)

magic:魔方矩陣是指該矩陣的行、列以及對角線上的和都完全一致的行列數相等(n*n)的矩陣。

2對矩陣進行操作的函式:數值計算、排序、旋轉、拼接

1)數值計算 abs:計算絕對值 sin/sind:計算正弦函式值 cos/cosd:計算餘弦函式值 tan/tand:計算正切函式值 round/floor/ceil/fix:四捨五入取整/向負無窮方向取整/向正無窮方向取整/往”零“方向取整 max/min/mean/std:最大值/最小值/均值/標準差 range:極差(最大值-最小值) sign:判斷正負號

2)操作矩陣 sort:排序 sortrows:按照關鍵列進行排序 rot90:逆時針旋轉 fliplr/flipud:矩陣左右翻轉/矩陣上下翻轉 horzcat/vertcat:水平拼接/豎直拼接 repmat:重複矩陣 reshape:變更矩陣維度 size/length:計算矩陣維度/計算矩陣長度

sort函式:sort(A) 在不新增額外引數的情況下,sort函式會對矩陣的每一列進行升序的排序。 sort(X,DIM,’MODE‘) X:矩陣 DIM:按列(1或空值)還是按行(2) MODE:升序(ascend或空值)還是降序(descend)

repmat函式: repmat(X,[M,N]) M表示將矩陣在行方向上重複M次,N表示將矩陣在列方向上重複N次。

size函式: size(B) 返回的兩個值分佈表示矩陣B的行數和列數 size(X,DIM) DIM表示輸出的行或列,1為行,2為列。

3)操作字元

sprintf:對變數進行格式化輸出 sscanf:對變數進行格式化讀取 eval:執行字元表示式 strcmp:比較字串 strcmpi:忽視大小比較字串 stract:拼接字串

sprintf可以將任意變數按照其資料型別輸出成字元型變數。 S=sprintf(FORMAT,A) A為輸入變數,FORMAT用於哦內閣制輸出的變數型別,以”%“開始,透過不同的轉義符來讀取輸入變數的型別。 常用 %d:有符號十進位制整數 %f:浮點數

控制輸出變數的標誌符、小數點位數和寬度: sprintf(’%[標誌符][寬度][。小數位數][轉義符]‘,A) 常見的標誌符包括“0”和“-”,分別表示用0補齊位數和左對齊。

eval函式可以直接執行字元化的表示式。

三、程式實驗刺激——判斷類函式

isempty:判斷空值 isfloat:浮點數 isinteger:判斷整數 isrow:判斷行向量 iscolumn:判斷列向量 isequal:判斷多個變數是否相等

四、輸出實驗結果——轉化操作、路徑和檔案操作

1)轉化操作函式

num2str:數值轉換成字元 str2num:字元轉換成數值 double2str:雙精度轉換成字元 str2double:字元轉換成雙精度 int2str:整數轉換成字元 double:將變數轉換成雙精度 int8:將變數轉換成8位整數

2)路徑和檔案操作函式

cd:改變當前路徑 dir:檔案或路徑列表 mkdir:建立資料夾 addpath:新增路徑 fopen:開啟檔案 fclose:關閉檔案 fread:讀取二進位制資料 fwrite:寫入檔案 fscan/fprintf:格式化資料讀取/格式化資料輸出

標簽: 矩陣  函式  變數  字元  隨機