MATLABエラー。未定義の関数またはメソッドXを 'double&#39 型の入力引数に使用しました。

私はMatlabの新規ユーザーですが、助けてもらえますか?
.Mファイルに次のようなコードがあります。

function f = divrat(w, C)
S=sqrt(diag(diag(C)));
s=diag(S);
f=sqrt(w'*C*w)/(w'*s);

このファイル(divrat.M)を通常のMatlabのパスに格納していますので、Matlabが起動時にこの関数を読み込んで、この関数が使えるようになっているものと考えています。

しかし、次のように入力すると

>> divrat(w, C)

と入力すると、以下のようなエラーが出ます。

????未定義の関数またはメソッド 'divrat' for input arguments of type 'double'.

コードにも関数呼び出しにもエラーが見当たらないのですが、エラーメッセージは何をしろというのでしょうか?

このエラーコードは、関数の定義が見つからないことを示しています。divrat.mファイルが保存されているのと同じワークスペースから関数を呼び出していることを確認してください。また、divrat関数が副関数ではなく、ファイル内で最初に宣言されていることを確認してください。ワークスペースの選択に問題があるのか、それとも関数に問題があるのかを確認するために、同じdivrat.m` ファイルから関数を呼び出してみることもできます。

ところで、なぜ単純に次のように言わなかったのですか?

s = sqrt(diag(C));

それは同じではないでしょうか?

解説 (0)

また、名前はdivrat.Mではなくdivrat.mとしてください。 これはほとんどのOSでは問題にならないはずですが、誰にもわかりません...。

また、matlabが関数を見つけられるかどうかは、whichコマンドを使ってテストすることができます。

which divrat
解説 (0)

関数自体は有効なmatlab-codeです。問題は他にあるはずです。
関数が置かれているディレクトリの中から関数を呼び出してみるか、addpath('パス名')を使ってそのディレクトリを検索パスに追加してみてください。

解説 (0)