Development Environment | ![]() ![]() |
サーチパス
MATLAB は、サーチパスを使って、ユーザファイルシステムの複数のディレクトリに格納されたM-ファイル、及び、他のMATLAB関連ファイルを検索しています。これらのファイルとディレクトリは、MATLAB及びツールボックスによって提供されたものです。MATLAB上で実行したいファイルは、全てカレントディレクトリ、または、サーチパス上にあるディレクトリに格納されていなければなりません。デフォルトにより、MATLABとMathWorksツールボックスが提供するファイルはは、デフォルトでサーチパスに追加されています。
MATLAB関連ファイルを作成する場合、作成したファイルを格納するディレクトリをMATLABのサーチパスに追加しなくてはなりません。ユーザが独自のM-ファイルを作成したり、MATLABによって提供されたM-ファイルを修正したりした場合、これらのファイルを$matlabroot/toolbox/matlab
上にないディレクトリに保存してください。ユーザが作成したファイルが$matlabroot/toolbox/matlab
上に保存されていると、MATLABの新しいバージョンをインストールした時に上書きされてしまいます。新しいバージョンをインストールした場合、新しい、または、更新されたファイルを使用する前にMATLABを再起動するか、関数rehash
を実行してください。この操作は、新しいファイル、更新されたファイルの位置を、MATLABセッションの起動時にメモリにロードし、格納することによって性能を改善するために必要な操作です。しかし、ファイルの位置の変更が、常に自動的にキャッシュに反映されるわけではありません。
サーチパスの参照、修正についての詳細は、サーチパスの設定を参照してください。
サーチパスの機能
サーチパスは、MATLAB パスとも呼ばれます。このパスに記載されているファイルは、パス上にあるものと考えます。サーチパスにあるディレクトリを追加した場合、ユーザはディレクトリをパスに追加したことになります。サブディレクトリは、明示的にパスに追加しなくてはなりません。それらは、親ディレクトリが存在しているので、パス上にない可能性もあります。サーチパスは、ファイルpathdef.m
に格納されています。
パス上にディレクトリの順序も無関係ではありません。たとえば、MATLABが、つぎに示すような foo
という名前の要素を検索するとしましょう。MATLABプロンプトで、foo
と入力すると、MATLABは、つぎの操作を行います。
foo
を変数として探索します。
foo
を組み込み関数として探索します。
foo.m
という名のファイルをカレントディレクトリで検索します。
foo.m
を検索します。
プライベート関数、サブ関数、オブジェクト指向の関数の探索範囲を制限するため、実際の検索ルールは、より複雑なものとなります。しかし、ユーザが作業する通常のM-ファイルについては、この単純化された検索ルールに従って検索が行われます。
同一名称の関数が1つ以上存在する場合、サーチパス上に並ぶディレクトリの順序が重要なものとなってきます。MATLABは、そのような関数を探すときに、サーチパス上の順序でディレクトリを検索し、最初に発見した関数を抽出するからです。この場合、サーチパス上の順序でより後に追加されたディレクトリに格納された同一名称の関数は、実体のないものとみなされ、実行できなくなります。詳細については、MATLABがメソッドを読み込む優先順位の決定法を参照してください。
使用されているパスネームを参照するには、特定の関数に対して、which
を使用します。詳細については、関数which
のレファレンスページを参照してください。
![]() | 配列エディタの設定 | サーチパスの設定 | ![]() |