心理學研究方法——基於matlab和psychtoolbox(1)
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)
紅色圓點為斷點(斷點所在行命令不執行)
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:格式化資料讀取/格式化資料輸出
下一篇:這酒館,銀川難得的一股清流