ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

関数呼び出し時の一般的なエラー

関数と変数の名前の競合

変数と関数が同じ名前をもち、その競合を解決する十分な情報が MATLAB® にない場合は、MATLAB からエラーがスローされます。その場合、次のようなエラー メッセージが表示されます。

Error: <functionName> was previously used as a variable,
  conflicting with its use here as the name of a function 
  or command.

ここで <functionName> は、関数の名前です。

関数 eval と関数 load を特定の方法で使用しても、変数名と関数名の同様な競合が起きることがあります。詳細は、次の参考文献を参照してください。

未定義の関数または変数

MATLAB で関数または変数を操作中に、次のようなエラー メッセージや同様のエラー メッセージが表示されることがあります。

関数または変数 'x' が未定義です。

これらのエラーは、通常、MATLAB が特定の変数または MATLAB プログラム ファイルを現在のディレクトリまたは検索パス上で見つけられないことを示しています。おそらく、根本的な原因は、次のいずれかです。

  • 関数名のスペルが間違っている

  • 関数名と関数を含むファイルの名前が同じでない。

  • 関数の所属するツールボックスがインストールされていない。

  • 関数への検索パスが変更された。

  • 関数が、ライセンスを所有していないツールボックスに属している。

この節で説明する手順に従って、この問題を解決してください。

関数名のスペルの確認

よくあるエラーの 1 つに、関数名のスペルミスがあります。特に、長い関数名や紛らわしい文字 (英字 l と数字の 1 など) を含む名前では、見つけにくいエラーが起こりがちです。

MATLAB 関数名にスペルミスがある場合、関数の候補名がコマンド ウィンドウに表示されます。たとえば、次のコマンドは、関数名に大文字を含んでいるので失敗します。

accumArray
Undefined function or variable 'accumArray'.
 
Did you mean:
>> accumarray

Enter キーを押して推奨されたコマンドを実行するか、または Esc キーを押してコマンドを解除します。

関数名とファイル名の一致を確認

関数名は、関数定義行の作成時に設定します。この名前は、必ず、保存先のファイル名に一致しなければなりません。たとえば、次のように、curveplot という名前の関数を作成するとします。

function curveplot(xVal, yVal)
     - program code -

その場合は、その関数を含むファイルには curveplot.m という名前を付けなければなりません。関数の pcode ファイルを作成する場合は、そのファイルに curveplot.p という名前を付けます。関数名とファイル名が競合する場合は、ファイル名が関数に指定された名前に優先します。この例では、関数 curveplotcurveplotfunction.m という名前のファイルに保存すると、この関数名による関数の呼び出しが失敗します。

curveplot
関数または変数 'curveplot' が未定義です。

この問題が発生したら、関数名かファイル名を変更して、同じになるようにしてください。この関数を使用するファイルをなかなか見つけられない場合は、次のように、MATLAB の [ファイル検索] ユーティリティを使用します。

  1. [ホーム] タブの [ファイル] セクションで、 [ファイルの検索] をクリックします。

  2. [ファイル名検索] で、*.m と入力します。

  3. [次のテキストを含むファイルを検索] で、関数名を入力します。

  4. [検索] ボタンをクリックします。

ツールボックスのインストール済みを確認

MATLAB またはツールボックスからの組み込み関数を使用できない場合は、その関数がインストールされているかどうか確認します。

どのツールボックスが必要な関数をサポートしているかわからない場合は、http://www.mathworks.com/help で関数のドキュメンテーションを検索してください。関数リファレンス ページの一番上にツールボックスの名前が表示されます。

関数の属するツールボックスがわかったら、関数 ver を使用して、MATLAB を実行しているシステムに、どのツールボックスがインストールされているか調べます。関数 ver では、現在インストールされている MathWorks® 製品すべてのリストが表示されます。ver で表示された出力内に必要なツールボックスが見つかると、そのツールボックスはインストール済みです。MathWorks 製品のインストールについては、『インストール ガイド』ドキュメンテーションを参照してください。

ツールボックスは見つからないが、インストールされているはずの場合は、おそらく、MATLAB パスの設定が正しくありません。次の節に進んでください。

関数のアクセスに使用されるパスの確認

この手順を実行すると、パスが既定にリセットされます。MATLAB は、ツールボックスの情報をキャッシュ ファイルに保存するので、まず、このキャッシュを更新してから、パスをリセットしなければなりません。以下を行います。

  1. [ホーム] タブの [環境] セクションで [設定] をクリックします。

    [設定] ダイアログ ボックスが表示されます。

  2. [MATLAB][一般] ノードの下で、[ツールボックス パス キャッシュの更新] ボタンをクリックします。

  3. [ホーム] タブの [環境] セクションで、 [パス設定] をクリックします。

    [パス設定] ダイアログ ボックスが開きます。

  4. [既定の設定] をクリックします。

    小さなダイアログ ボックスが開き、続行すると現在のパス設定が失われる、という警告のメッセージが表示されます。続行する場合は [はい] をクリックします。

(MATLAB へのカスタム パスを追加している場合は、後でそれらの復元が必要になります)

再度、ver を実行して、ツールボックスがインストールされているかどうか確認します。インストールされていない場合は、このツールボックスを再インストールして、この関数を使用してください。ツールボックスのインストールの詳細は、関連ソリューション 1-1CBD3 「How do I install additional toolboxes into my existing MATLAB」を参照してください。

ver からツールボックスが表示されたら、次のコマンドを実行して、関数を見つけることができるかどうか調べます。

which -all <functionname>

<functionname> は、関数の名前で置き換えます。関数ファイルのパスが表示されるはずです。関数名が見つからないというメッセージが表示されたら、そのツールボックスを再インストールして、関数をアクティブにする必要がある場合があります。

ライセンスでツールボックスがカバーされていることを確認

エラー メッセージ「Has no license available」が表示された場合は、ライセンス関係の問題によって、関数が使用できなくなっています。発生しているエラーを調べるには、以下のコマンドを使用できます。

license checkout <toolbox_license_key_name>

<toolbox_license_key_name> は、関数を含むツールボックスの正しいキー名で置き換えます。ライセンス キー名を見つけるには、ライセンス ファイルの INCREMENT 行を調べます。ライセンス ファイルの見つけ方については、関連ソリューション1-63ZIR6「Where are the license files for MATLAB located?」を参照してください。

すべてのツールボックスのライセンス キー名は、license.dat ファイルの各 INCREMENT タグの後にあります。以下に例を示します。

INCREMENT MATLAB MLM 17 00-jan-0000 0 k
B454554BADECED4258 \HOSTID=123456 SN=123456

license.dat ファイルに INCREMENT 行がない場合は、ライセンス管理者に問い合わせてください。たとえば、Symbolic Math Toolbox™ のライセンスをテストするには、次のコマンドを実行します。

license checkout Symbolic_Toolbox

正しくテストが行われると、"ANS=1" という結果が返ります。テストが正しく行われないと、ライセンス マネージャーからエラーが返ります。エラーをトラブルシューティングするには、次の URL でライセンス マネージャー エラーを調べるか、

http://www.mathworks.com/support/install.html

または、次の URL でエラーについて Installation Support Team に問い合わせることができます。

http://www.mathworks.com/support/contact_us/index.html

サポートに問い合わせる際には、ライセンス番号、MATLAB バージョン、使用中の関数、およびライセンス マネージャー エラー (該当する場合) を提示してください。

この情報は役に立ちましたか?