Ошибка MATLAB: Неопределенная функция или метод X для входных аргументов типа 'double'

Я начинающий пользователь 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)

я получаю следующую ошибку

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

Что мне делать в сообщении об ошибке, я не вижу ошибки в коде или вызове функции?

Код ошибки указывает на то, что определение функции не может быть найдено. Убедитесь, что вы вызываете функцию из той же рабочей области, где хранится файл divrat.m. И убедитесь, что функция divrat не является подфункцией, это должно быть первое объявление функции в файле. Вы также можете попробовать вызвать функцию из того же файла divrat.m, чтобы понять, в чем проблема - в выборе рабочего пространства или в функции.

Кстати, почему вы просто не сказали

s = sqrt(diag(C));

Разве это не то же самое?

Комментарии (0)

Также назовите его divrat.m, а не divrat.M. Это не должно иметь значения на большинстве ОС, но кто знает...

Вы также можете проверить, может ли matlab найти функцию, используя команду which, т.е.

which divrat
Комментарии (0)

Сама функция является правильным matlab-кодом. Проблема должна быть в чем-то другом.
Попробуйте вызвать функцию из каталога, в котором она находится, или добавьте этот каталог в свой searchpath с помощью addpath('pathname').

Комментарии (0)