MATLAB Function Reference |
Description
我們可以利用既有的函式再定義新的MATLAB函式。而這種利用已有的函式和指令去產生、並以文字方式表示的函數叫做M檔案。
M檔案可以是副本(scripts) 或函式 (functions)。副本(scripts)是包含一段MATLAB敘述的檔案。而函式使用到本身的區域變數和輸入引數。
M檔案的名稱以英文字母開頭,並包含延伸檔名 .m
。M檔案的檔名(不包括延伸檔名)是當你想使用這個副本(scripts)或函式時,MATLAB所要尋找的對象。
M檔案的第一行有特定的語法。第一行中所指定的函式名稱一定要和檔案名稱一樣(不包含延伸檔名)。下例中為一檔名為 stat
.m
的內容
function [mean,
stdev] = stat(x)
n = length(x);
mean = sum(x)/n;
stdev = sqrt(sum((x-mean).^2/n));
定義一個新函式 stat
,拿來計算向量的平均值和標準差。而在函式中所用到的變數全是區域變數。
子函式( subfunction),為在函式或子函式之後,再利用 function
這個關鍵字來定義一個新的函式,而這個函式只能在同一個檔案中的其他函式中所看見(visible)。下例中 avg
是在 stat.m
檔案中的子函式:
function [mean,stdev] = stat(x) n = length(x); mean = avg(x,n); stdev = sqrt(sum((x-avg(x,n)).^2)/n); function mean = avg(x,n) mean = sum(x)/n;
我們無法從定義這個子函式的檔案以外看到(visible)它。函式通常到結尾時才會回傳,而可使用 return
指令來強迫其提早回傳。
當MATLAB不能用函式名稱來認出這個函式時,會自動去磁碟中尋找同名的檔案。若在磁碟中找到,會將之編譯(compile)並放入記憶體中,以方便接下來使用。一般來說,若你在MATLAB中輸入指令,直譯器(interpreter)會做下列事項:
eig
, sin
)當你從命令列(command
line)或M檔案中呼叫M檔案所定義的函式時,MATLAB會解析此函式並存入記憶體中。而解析過的檔案直到使用清除指令或下quit
指令關閉MATLAB時才會清除掉。 而 pcode
指令會進行解析的動作並轉成P檔案存入磁碟中,以便將將來載入。
See Also
nargin
, nargout
, pcode
, varargin
, varargout
, what
func2str | function_handle (@) |