何かがおかしい・・関数の仕様が変わったか?な時に

michio on 23 Jun 2025
Latest activity Edit by Tak on 25 Jun 2025

  • 昨日までちゃんと動いていたのに・・
  • ヘルプページ通りに書いているのに・・
MATLAB 関数がエラーを出すようになることありますよね(?)そんな時にみなさんがまず確認するもの、何かありますか?教えてください!
自分がまず試すのはこれ:which 。うっかり同じ名前の関数や変数を作っちゃっているかどうかを確認できます。
例えば
which -all plot
をコマンドウィンドウで実行して、もともと MATLAB で定義されている plot 関数(MATLAB のインストールフォルダにある plot 関数)がちゃんと頭に出てくるかどうか確認します。
Tak
Tak on 25 Jun 2025 (Edited on 25 Jun 2025)
プログラミングを始めたばかりの方で「関数のエラーが解消できない!」と呼ばれてみると、入力引数で渡しているデータ型や配列サイズが合っていない…というケースは多いです。
最近は特に「AIに聞いてみたら書いてくれたんですが動かなくて…」という理由ですね。
doc でドキュメントを開くのは基本ですが、左側の目次から「入力引数」を選択して一緒に確認するようにしています。
MathWorksさんがこんなに丁寧に…しかも日本語環境でドキュメント書いてくれてるんだからちゃんと読みましょうと指導しています。ドキュメントにアンカーリンクもあるので共有しやすくて助かります。
また、スクリプトの動作ごとにエラーが出たり出なかったり、動くものの結果が変わったりする…という場合は、繰り返し処理の前に「配列の事前割り当て」ができていない可能性を疑います。
これも基本と言えば基本なんですが…エディタの右側のインジケーターから一緒に確認するようにしています。
警告は気になっちゃう方なので、確認済みの %#ok も含め、極力全部潰す派です…。
MATLAB は単なるエラーや警告メッセージだけでなく、その理由や改善のための推奨アクションまで教えてくれる。とても親切な開発環境で助かります。
Jiro Doke
Jiro Doke on 23 Jun 2025
which はよく使いますね.
あとは,
dbstop if error
で,行ごとにステップもしくはステップインしたりします.
michio
michio on 23 Jun 2025
ステップインで呼び出されてる関数を確認できますね。
dbstop if error
で止めちゃう!考えてみればこれが一番手間がかからないかも・・
Iwasato Takuya
Iwasato Takuya on 23 Jun 2025
少し違うかもしれませんが…所在確認も含めて、editで直接呼び出すことが多いです。
michio
michio on 23 Jun 2025
確かに edit で開くとこまで一気にできるのもいいですね。ありがとうございます!