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

3 min read読了の目安(約3400字

何かがおかしい・・そんな時には

  • 意味の分からないエラーが・・
  • プロット表示がなんか変 or 表示されない・・
  • 根本原因はどうでもいいから何とかしてくれ。もう再インストールしてやる!

エラー文もよくわからんし、どう考えても自分の書いた部分が原因じゃないだろう・・。
MATLAB 使っていると、たまに? こんなことありますよね。

そんな時、怒りに任せて再インストールをしちゃう前に気軽に試せる2つの関数とその背景を紹介します。

  1. パス初期化:restoredefaultpath
  2. 設定ファイル初期化:prefdir
restoredefaultpath % パスの初期化
savepath % 初期化されたパス設定を保存
prefdir % で表示されるフォルダの削除(バックアップは適宜)

これだけ!

特に「設定ファイル」は再インストールだけでは初期化されない場合があるので、
再インストールが無駄に終わることもあり要注意です。

参考:MATLAB 環境を初期化するにはどうすればよいですか?

もちろんこの2つですべての問題が解決するわけではないのですが、
どうしようもないときに試せるもの、という感じでどうぞ。
それぞれ紹介していきます。

パス初期化:restoredefaultpath

restoredefaultpath % パスの初期化
savepath % 初期化されたパス設定を保存

なにが原因かはさておき、MATLAB インストール直後にパスの設定が問題を引き起こすケースはよく聞きます。あとはうっかりパスをいじってしまったときなどですね。
そんな時は「えい!」っと restoredefaultpath でパス設定を初期化して、問題が解決されるかを確認しましょう。解決したようであれば savepath で初期化したパス設定を保存します。

restoredefaultpath の実行だけだと、パス初期化は一時的なものなので、MATLAB を再起動すると元の状態に戻りますので、気軽に試してくれて大丈夫。

パス初期化で解決する問題ってどんなもの?

いろいろですが、とりあえず自分で書いたコードが原因じゃなさそうな雰囲気は共通しています。
以下にエラー例を MATLAB Answers から引用します。

いろいろですね。
他にもこんな問題がパスの初期化で解決したよ!というものがあればコメントください。

設定ファイル初期化:prefdir

MATLABの再インストールでさえも解決できない?
そんな恐ろしい現象の背景にあるのがこちら prefdir です。

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

と大体こんなところに MATLAB のバージョン別に保存されているのが、各種設定ファイル。
コマンド履歴やショートカット・レイアウト・言語設定などが保存されています。

うっかり設定しちゃったことが原因でおかしくなった、ただ何かは覚えていない。いや、俺は何もしていない(大体やってます・・)、そんな状態のときには、このフォルダをごそっと消してしまって、MATLAB を再起動すればOKです。再起動すると設定ファイルが再生成されます。

慎重な方はフォルダ名を変更(例: R2019a_bk)してバックアップを取っておいてもいいですね。あとで R2019a に戻せば元通り。

**アンインストールで削除されてなかった場合は、インストールし直した MATLAB が再びこのフォルダを参照するため、元の問題が再現されてしまいます。**怖いですね。

もちろん、他の PC で同じ設定を再現したい、そんな時にはこのフォルダの中身をコピーすればOKですね。

参考:How do I save my editor preferences when I copy MATLAB to a new machine?

設定ファイルの初期化で解決する問題ってどんなもの?

こちらも多岐にわたります。パッと思い出せるものだと

  • Live Editor 上にプロットが表示されなくなる
  • アプリが起動しない
  • 起動に時間が掛かり、かつ、Javaエラーが発生

などなど。
もはやユーザーがいじれる設定なんて関係なさそう・・というところがミソですね。

まとめ

何かがおかしい・・そんな時にまず試す価値がある2つのコマンドを紹介しました。
直接の原因は有耶無耶になりますが、わけのわからないエラーにイライラする前に是非。

restoredefaultpath % パスの初期化
savepath % 初期化されたパス設定を保存
prefdir % で表示されるフォルダの削除(バックアップは適宜)