1. ホーム
  2. matlab

[解決済み] MATLABのパスに影をつける」とはどういう意味ですか?ファイル内で行うにはどうしたらいいですか?

2022-02-14 10:33:12

質問内容

unitTesterファイルを実行する前に、常にこの操作を行う必要があります。なぜこれが必要なのか理解できません。これは何を意味するのでしょうか?また、なぜ "Add to Path > Selected Folders and Subfolders" が足りないのでは?

[更新】のお知らせ] これは こちら が問題なのかもしれません。カーネルは、ファイル名が同じである異なる手法でプログラムされています。私はそれぞれのケースで特定のファイルだけが使用されることを確認する必要があります。最も簡単な方法は、名前空間を混乱させないために、ここでパッケージを使用することですか?

解決方法は?

MATLABは検索パス上でm-fileを検索するので、それを表示するには path コマンドを使用します。MATLABのパス上に同じベースネーム(拡張子以前のファイル名の部分、ディレクトリを除く)を持つ複数のm-fileがある場合、MATLABはパス上で最初に来たものだけを実行することができます。

を使用することができます。 addpathrmpath 関数を使って、動的にパスを変更することができます。例えば、テスト実行スクリプトの中で、関連するディレクトリを自動的に追加することができます。注意点として addpath は新しいパスをパスリストの先頭に追加し、既存のエントリよりも優先されることを確認します。

このような名前の衝突を防ぐ別の方法として パッケージ .

EDIT: ディレクトリをパッケージに変換するには、次のようにします。

  • を追加します。 + を名前の先頭に追加します。
  • ディレクトリの親をMATLABのパス上に置くことを確認してください。
  • パッケージ内のすべての関数の呼び出しを更新するには、その前に packagename. を呼び出すか、呼び出しの前にパッケージの内容を含めることで( import packagename.* ).

一般的に、私は動的なパスの変更よりもパッケージの方が使いやすいと思います。パッケージはネストできることに注意してください (例. my_matlab_files/+mypkg/+nested/foo.m ).