Getting Started | ![]() ![]() |
ファンクション
ファンクションは、入力引数をもち、出力引数を出力するM-ファイルです。M-ファイルの名前と関数の名前は同じものにしてください。ファンクションM-ファイルは、それ自身がもつワークスペースの中で変数を使い、MATLABコマンドプロンプトでアクセスするワークスペースと区別します。
良い例題は、rank
を使って示されます。M-ファイル
rank.m
は、
toolbox/matlab/matfun
のディレクトリにあります。ファイルの内容は、つぎのコマンドで表示されます。
type rank
function r = rank(A,tol) % RANK Matrix rank. % RANK(A) provides an estimate of the number of linearly % independent rows or columns of a matrix A. % RANK(A,tol) is the number of singular values of A % that are larger than tol. % RANK(A) uses the default tol = max(size(A)) * norm(A) * eps. s = svd(A); if nargin==1 tol = max(size(A)') * max(s) * eps; end r = sum(s > tol);
ファンクションM-ファイルの最初の行は、function
と言うキーワードで始まります。これは、関数名と引数の順序を与えるものです。この例題では、入力引数は2つで、出力引数は1です。
最初のブランク行または実行可能行までの数行は、ヘルプテキストを与えるコメント行です。これらの行は、ユーザが
help rank
とタイプすることで、表示されます。ヘルプテキストの最初の行は、H1ラインと言われ、lookfor
コマンドを使うか、またはディレクトリ上の help
によりMATLABが表示するものです。
ファイルの残りは、関数を定義している実行可能なMATLABコードです。最初の行の中の変数
r
, A
, tol
と同様に関数の中に導入されている変数 s
は、すべて関数のローカル 変数です。すなわち、MATLABワークスペースの中の変数とは異なるものです。
この例題は、MATLAB関数の一つの見方を示すもので、通常の他のプログラミング言語の中には見られません。すなわち、引数の数を可変にできます。関数
rank
は、種々の方法で使うことができます。
rank(A) r = rank(A) r = rank(A,1.e-6)
多くのM-ファイルは、この方法で実行します。出力引数を設定しなければ、結果は
ans
にストアされます。2番目の入力引数が設定されなければ、関数はデフォルト値を使って計算します。関数の中で、nargin
と nargout
と名付けられた2つの量は、関数の中で特殊な使い方で、入力引数の数や出力引数の数を出力するものです。関数
rank
は、nargin
を使っていますが、nargout
は使う必要がありません。
![]() |
スクリプト | グローバル変数 | ![]() |