ベース ワークスペースと関数ワークスペース
MATLAB® で初めて作業を開始するときは、通常、ベース ワークスペースを操作します。独自の関数またはクラスを定義し、デバッガーを使用してコードを解析する場合は、おそらく、関数ワークスペースを操作します。このトピックでは、各ワークスペースの違いと、現在アクティブなワークスペースを識別する方法について説明します。
ベース ワークスペースとは
ベース ワークスペースには通常、コマンド ラインやスクリプトでコードを実行して作成した変数が含まれます。たとえば、コマンド ラインで X
に値を代入すると、ベース ワークスペースで X
が作成または更新されます。
X = rand(10);
ベース ワークスペースの変数は、ユーザーが変数をクリアするか MATLAB セッションを終了するまでメモリ内に存続します。
関数ワークスペース
関数内のコードはベース ワークスペースを使用しません。関数には、それぞれ独自の関数ワークスペースがあります。各関数のワークスペースは、データの整合性を確保するためにベース ワークスペースやその他のワークスペースとは分離しています。共通ファイル中のローカル関数にも、それぞれ専用のワークスペースがあります。関数内で作成された変数はその関数のワークスペースに属し、その関数内でのみ使用できます。
たとえば、あるファイルで関数を定義するとします。この例では、areaCircle
関数は R
という名前の入力を受け入れ、ローカル変数 rSquared
を作成して、A
という名前の出力を返します。
エディターでブレークポイントを設定すると、関数の呼び出し時に実行が一時停止し、関数ワークスペースを操作できます。デバッグ中は、エディターとデバッガーのオプションを使用して、ベース ワークスペースを含む、現在のスタック内のワークスペースを切り替えることができます。
areaCircle
が実行を終了すると、ベース ワークスペースには myArea
と X
が含まれています。areaCircle
のローカル変数であった A
、R
、および rSquared
変数は、ベース ワークスペースに含まれていません。
スクリプトには独自のワークスペースはありません。関数からスクリプトを呼び出す場合、そのスクリプトでは関数ワークスペースが使用されます。それ以外の場合、スクリプトはベース ワークスペースを使用します。
入れ子関数
ローカル関数と同様に、入れ子関数にも専用のワークスペースがあります。ただし、次の 2 つの大きな違いがあります。
親関数ワークスペース内の変数は、入れ子関数でも使用できます。
入れ子関数とその親関数内のすべての変数は明示的に定義する必要があります。したがって、変数に値を代入する関数やスクリプトを呼び出すには、関数ワークスペースにその変数が既に存在していなければなりません。
詳細については、入れ子関数を参照してください。