私は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));
それは同じではないでしょうか?