Programming and Data Types    

Functionファイルの動き

MATLABコマンドライン、または、他のM-ファイルの内部からFunction M-ファイルを読むことができます。すべての必要な引数、すなわち、丸括弧の中に入力引数、鍵括弧の中に出力引数を設定してください。

Function名の認識について

MATLABは、新しい名前が入ってくると、つぎのステップに従って、設定したFunctionの認定を行ないます。

  1. 名前が、変数かどうかをチェックします。
  2. 名前が 、サブ関数かどうかをチェックします。サブ関数は、Functionを読み込んだときに、同じM-ファイルの中に設定しているMATLAB Functionのことです。詳細は、サブ関数の節を参照してください。
  3. 名前が、プライベート関数かどうかをチェックします。すなわち、プライベートディレクトリ、すなわち、そのすぐ上のディレクトリのM-ファイルのみをアクセスできるディレクトリに保存されているMATLAB Functionかどうかをチェックします。この詳細は、プライベート関数を参照してください。
  4. 名前がMATLABサーチパスの上のFunctionかどうかをチェックします。MATLABは設定した名前が最初に表れるファイルを使います。

関数名が重複している場合、MATLABは上の規則に従って最初にマッチするものを実行します。また、関数名をオーバロードすることもできます。これは、付加的なパッチ則を使い、14章の"クラスとオブジェクト"で議論します。

Functionを読み込んだとき、何が生じますか

コマンドライン、または、他のM-ファイルからFunction M-ファイルを読み込むと、MATLABは、Functionを擬似コードに分解したり、メモリに保存します。これにより、MATLAB実行中に、その関数を使うたびに毎回擬似コードに分解はしません。擬似コードは、コマンド clearを使ってクリアするか、MATLABを終了するまでメモリ内に残ります。

この clearコマンドの使い方を示します。

clear function_name
ワークスペースから指定した関数を消去
clear functions
すべてのコンパイルした M-ファイルを消去
clear all
すべてのFunctionと変数を消去

P-コードファイルの作成

pcodeコマンドを使って、その後でMATLABで使うために、Function、または、Scriptsの分解したバージョンをセーブすることができます。例えば、

は、average.mを分解し、average.pと名付けられたファイルに擬似的にコード化されたものをセーブします。これは、最初にaverage.mを分解し、その結果をセーブし、その後、実行するときにaverage.pを使います。

MATLABは分解するのにあまり時間を使いません。従って、pcodeコマンドにより、処理スピードが変化することはあまりありません。

pcode は、大きなGUIアプリケーションには、スピード的に非常に効率的に働きます。GUIでは、アプリケーションが可視化される前に、多くのM-ファイルを分解する必要があります。

pcodeに関する他の考えは、ユーザ自身のM-ファイルのアルゴリズムを隠すためです。

MATLABは、どのように Functionへ引数を渡しますか

プログラマの立場から、MATLABはすべての関数引数を値として取り扱います。しかし、実際に、MATLABは、関数が変更した引数のみの値を渡します。Functionが引数を変更しなく、単に計算の中でこれを簡単に使うと、MATLABはメモリ使用を最適化するために基準に従って引数を渡します。

Functionワークスペース

各M-ファイルFunctionは、それ自身のワークスペースをもち、それ自身を実行するMATLABのベースワークスペースとは異なります。このエリアは、Functionワークスペースと呼ばれ、各関数がもつワークスペースの内容をもっています。

MATLABを使っている間、ユーザがアクセスできる変数は、引数で設定しているもののみで、ベースのワークスペースに存在するものか、または、他の関数の引数になっているもののみです。ユーザがFunctionに転送する変数は、読み込むFunctionの中の引数でなければなりません。そして、Functionは、出力引数を読み込んだワークスペースに返します。しかし、変数をグローバル変数として設定することができます。グローバル変数は、複数のワークスペースの中でアクセスすることができます。


 Function名 Function引数の数のチェック