2

私の機能は間違いなく機能しています。それはテストされ、ある時点で認識されていました。

関数プロトタイプは次のとおりです。

function [X Y] = calculateEllipse(x, y, a, b, angle)
%# Code here
end

Matlabターミナルからの呼び出しは次のとおりです。

calculateEllipse (612, 391, 107, 60, 331)

これが私に飛び出したエラーです:

??? Undefined function or method 'calculateEllipse' for input arguments of
type 'double'.

今、私は関数と同じディレクトリにいることを100%肯定しています。私も使った

addpath('C:\path-to-function')

確かめる。それはただ機能しておらず、私は困惑しています。

どんな助けでも大歓迎です。

4

4 に答える 4

7

他の投稿を要約すると、問題の原因を特定するためのワークフローがここにあります。

  1. 関数の名前を間違えました。関数定義をチェックして、実際に が呼び出されていることを確認してくださいcalculateEllipse

  2. 関数名以外の名前のファイルに関数を保存しました。関数のファイル名を確認し、関数名と一致していることを確認してください。

  3. 関数名を含むフォルダーが MATLAB パス上にありません。これを確認するにはいくつかの方法があります。入力pathして、現在のパスを確認するかwhich calculateEllipse、MATLAB がそのファイルに使用している場所を見つけます。(問題がある場合、最後のコマンドは と表示されます'calculateEllipse' not found.addpathはパスを永続的に更新しないため、MATLAB を閉じるとパスがリセットされることに注意してください。このために使用savepathします。

  4. 関数を含むフォルダは、 のサブディレクトリですmatlabroot。これらのフォルダーは、本格的なツールボックス用に予約されています。ここにコードを保存すると、悪いことが起こります。詳細については、ボブの回答を参照してください。

その他のチェック事項は次のとおりです。

  1. 同じフォルダに格納されている他の関数を呼び出すことはできますか?

  2. 関数を別のフォルダーに保存した場合、関数は実行されますか?

于 2011-08-31T13:10:36.763 に答える
4

ジェフが言ったことに加えて; もう1つの可能性は、MATLABインストール内のどこかに関数を配置したことです。デフォルトでは、MATLABは独自のファイル構造で新しいファイルを再検索しません。内部ファイル構造は変更されないままであると想定しています。ファイル(Jeffが指摘したように、 calculateEllipse.mという名前にする必要があります)をMATLABインストールの外部のどこかに保存していることを確認してください。

https://www.mathworks.com/help/matlab/matlab_env/toolbox-path-caching-in-the-matlab-program.htmlを参照するか、MathWorksWebサイトにアクセスして検索してください。

path cache

詳細については。

于 2011-08-31T05:00:25.067 に答える
2

この問題の鍵は次のとおり%Has no license availableです。これは、使用しようとしている関数のディレクトリ内の関数が、所有していないツールボックス内の関数と同じ名前であることを意味します。MATLAB は既定で、所有していないツールボックス内の同じ名前の関数だけでなく、ディレクトリ全体を無効にします。次に例を示します。

ディレクトリ内のファイル:

myfunction.m
scoobydoo.m
blackman.m

「信号処理ツールボックス」を所有していない場合は、blackman.mディレクトリ全体を無効にします。

于 2013-12-18T15:39:18.240 に答える