【MATLAB】パス設定に関する"基礎"知識


はじめに

以前、resturedefaultpath を使ったパス設定の初期化について紹介しました。

参照:【MATLAB】何が起こっているか分からないが致命的っぽいエラーの処置方法

今回はパス設定にもう少しだけ踏み込んで、MATLAB を起動するたびに裏で必ず動いている、

  • pathdef.m
  • userpath

について紹介します。パス設定のベース(基礎)ですね。

自分だけのパス設定で作業したいがチームでPCを共有している・・そんな時に役立つかもしれません。

関連 Q&A

そもそもパス(PATH)とは

(自分がそうだったんですが・・)MATLAB のパス設定を触っている方はどれくらいいらっしゃるのでしょう?

パスってなんだっけ?という方は、MATLABに限らずパス設定そのものについては良記事がありましたので、こちらも参照ください。

まずは pathdef.m

MATLAB ではパス設定は pathdef.m というファイルに保存されていて、MATLAB 起動時に読み込まれます。

ファイルのありかはおなじみ which コマンドで見つかります。


>> which -all pathdef
C:\Program Files\MATLAB\R2019a\toolbox\local\pathdef.m

例えば addpath 関数でフォルダをパスに追加するなどした後、savepath 関数を実行するとこの pathdef.m が更新されるわけです。何かパス設定をいじるときには、このファイルさえバックアップ取っておけば安心です。

内容を確認するなら >> edit pathdef で。大事なパス設定が直書きされています(笑)自信のある方は手で書き換えてもいいですが(あまりよくない)気をつけてください。

もし、うっかり意図しない編集をしてしまったら、

savepath

で元にもどる可能性はあります。やっぱりダメだったら

restoredefaultpath
savepath

で初期設定に・・。

:環境変数 MATLABPATH で起動時にパスを追加する方法もあります。(参照: 環境変数 MATLABPATH の設定

2つ目の pathdef.m

さて、特に何もしなければ pathdef.m は1つだけで十分なんですが、冒頭で触れたように2つ以上用意できると便利な場面もあります。例えば、

  • 複数人で共有しているPCなので、勝手にパスをいじると他の人に迷惑がかかる。
  • C:\Program Files\MATLAB\R2019a\toolbox\local の編集権限が無く、パス設定を変更できない!

こんな時は userpathpathdef.m を保存すればOKです。

userpath とは?

userpath とはユーザー固有の作業フォルダのようなもの。特に設定した覚えが無くても、何らかのフォルダが userpath として指定されていると思いますので、興味がわいた方は確認してみてください。

>> userpath
ans =
    'C:\Users\eigs\Documents'

このフォルダに pathdef.m があれば、C:\Program Files\MATLAB\R2019a\toolbox\local より優先されて読み込まれることになります。

userpathpathdef.m をコピーしてから which コマンドで見てみると


>> which -all pathdef
C:\Users\minoue\Documents\pathdef.m
C:\Program Files\MATLAB\R2019a\toolbox\local\pathdef.m  % Shadowed

の通り、もともとの pathdef.m より優先されています。この状態でパスをいじって savepath すると userpath にある pathdef.m が編集されます。

>> userpath(絶対パス名) で任意のフォルダを設定できますので、ユーザー固有のパス設定を持つことができるわけです。

userpath 設定情報はどこに保存されている?

既におなじみ prefdir フォルダに保存されています。

>> prefdir
ans =
    'C:\Users\eigs\AppData\Roaming\MathWorks\MATLAB\R2019a'

これもユーザー固有のものが持てますね。

複数の MATLAB バージョンを入れている場合は要注意

複数のMATLABバージョンで同じ userpath 設定だと、同じ pathdef.m を共有してしまうことになります。フォルダ構成は各バージョン同じではないので、大問題。userpath もバージョンごとに変える必要がありますね。

-MATLAB Answers: MATLABを起動すると、「関数または変数 'matlab.in​ternal.edi​tor.Evalua​tionOutput​sService.p​rewarmExec​ution' が認識されません。」​のエラーが発生するの​はなぜですか?

まとめ

パス設定の"基礎"を紹介しました。これでもう MATLAB のパス設定で迷うことはないですね。
ちなみに userpath フォルダは検索パスの一番上に追加されます。

>> path
        MATLABPATH
    C:\Users\eigs\Documents
    C:\Program Files\MATLAB\R2019a\toolbox\matlab\capabilities
    C:\Program Files\MATLAB\R2019a\toolbox\matlab\datafun
(中略)

公式ページ:MATLAB 検索パスの表示と変更