なぜ「関数または変数 'xxxx' が未定義です/認識さ​れません」のエラーが​発生するのですか?

1,344 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2016 年 12 月 14 日
編集済み: MathWorks Support Team 2022 年 1 月 25 日
以下のようなエラーメッセージが発生した場合、どのように回避すればいいか、教えてください。
関数または変数 'xxxx(関数名)' が未定義です。
関数または変数 'xxxx(関数名)' が認識されません。 
未定義の関数、またはメソッド 'xxxx(関数名)' (タイプ 'yyyy(クラス名)' の入力引数)。

採用された回答

MathWorks Support Team
MathWorks Support Team 2022 年 1 月 25 日
編集済み: MathWorks Support Team 2022 年 1 月 25 日
上記のエラーが発生しているとき、MATLABでは、指定された文字列を MATLABパス上の関数の名前または変数名として認識していません。
"未定義の関数または変数"のメッセージは、以下の理由で発生している可能性があります。
1) このコードの行が実行される前に定義されていない変数を使用しようとしている
>> x=1:10;\n>> t=x.^2;\n>> plot(x,y) 関数または変数 'y' が認識されません\n\n% 考えられる修正案:\n% 3行目を"plot(x,t)"に変更する\n% または、2行目を "t=x.^2;" から "y=x.^2;" に変更する
2) 関数名や変数名を入力する際の誤字
なお、近年のリリースでは、これらのタイプミスを "もしかして(Did you mean)"の候補を提示して解決しようとします。
例:
>> foo = 42;\n>> fo0\n関数または変数 'fo0' が認識されません。\nもしかして:\n>> foo
3) 関数名や変数名の大文字・小文字を間違えている
近年のリリースでは、上記2 と同様にこれらのタイプミスを "もしかして(Did you mean)"の候補を提示して解決しようとします。
4) ディレクトリを変更したことで、使用した関数がMATLABのパスから外れている
5) ライセンスを取得していない、またはインストールされていないツールボックスの関数を使用している
なお、近年のリリースでは、"関数または変数が未定義"のエラーではなく、MATLAB はその関数を使用するライセンスを持っていないか、適切なツールボックスがインストールされていないことを知らせます。
例:
>> simulink\n'simulink' には Simulink が必要です。
6) 最初の入力でオブジェクトなしにオブジェクトのメソッドを呼び出している
7) 使用中のプラットフォームと異なるプラットフォームでコンパイルされた MEX 関数を使用している
8) MATLAB から削除された関数を使用している
MATLAB の後のバージョンでは、これは "関数または変数が未定義" エラーではなく、MATLAB は使用する新しい推奨される関数を知らせます。
回避方法:
まず、未定義の関数または変数が表示されていること(パスまたは現在のワークスペースにあること)、この行のコードが実行される前に定義されていることを確認します。
次に、変数や関数が確実に存在する場合、関数名や変数名の大文字と小文字を確認します。未定義の識別子が関数である場合、'which' 関数を使用すると、エラーが発生した関数から見えるかどうかを確認することができます。
>> which 関数名(もしくは変数名) -all
また、MATLABの検索パスに問題がある場合、以下のMATLABコマンドを実行し、MATLABを再起動します。
>> restoredefaultpath % 検索パスの初期化\n>> rehash toolboxcache % キャッシュのクリアとアップデート\n​​​​​​​>> savepath
さらに、上記 5) の場合に、該当の Toolbox がインストール環境に含まれるか確認するには、license 関数を使用します。
例えば Simulink について調べる場合には、"license" 関数を使用します。
>> license('checkout','simulink')
出力として、'ans = 1'を返す場合は、該当製品のライセンスが有効です。
失敗した場合は、ライセンスが既にチェックアウトされているか、ライセンスが期限切れになっている、またはライセンスが無効であることを示します。
関連情報:

その他の回答 (0 件)

タグ

タグが未入力です。

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!