Soy un nuevo usuario de Matlab, ¿pueden ayudarme?
Tengo el siguiente código en un archivo .M:
function f = divrat(w, C)
S=sqrt(diag(diag(C)));
s=diag(S);
f=sqrt(w'*C*w)/(w'*s);
He almacenado este archivo (divrat.M) en la ruta normal de Matlab, y por lo tanto I'm suponiendo que Matlab leerá la función cuando it's de partida y que esta función por lo tanto debe estar disponible para su uso.
Sin embargo, cuando escribo
>> divrat(w, C)
Me sale el siguiente error Error Undefined function or method 'divrat' for input arguments of type 'double'.
¿Qué me dice el mensaje de error, no veo ningún error en el código o en la llamada a la función?
El código de error indica que no se puede encontrar la definición de la función. Asegúrese de que está llamando a la función desde el mismo espacio de trabajo en el que está almacenado el fichero divrat.m
. Y asegúrese de que la función divrat
no es una subfunción, debe ser la primera declaración de función en el archivo. También puede intentar llamar a la función desde el mismo fichero divrat.m
para ver si el problema está en la selección del espacio de trabajo o en la función.
Por cierto, ¿por qué no has dicho simplemente
s = sqrt(diag(C));
¿No sería lo mismo?
Además, nómbralo divrat.m
, no divrat.M
. Esto no debería importar en la mayoría de los sistemas operativos, pero quién sabe...
También puedes probar si matlab puede encontrar una función usando el comando which
, por ejemplo
which divrat