Я начинающий пользователь 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));
Разве это не то же самое?
Также назовите его divrat.m
, а не divrat.M
. Это не должно иметь значения на большинстве ОС, но кто знает...
Вы также можете проверить, может ли matlab найти функцию, используя команду which
, т.е.
which divrat
Сама функция является правильным matlab-кодом. Проблема должна быть в чем-то другом.
Попробуйте вызвать функцию из каталога, в котором она находится, или добавьте этот каталог в свой searchpath с помощью addpath('pathname')
.