Error MATLAB: Función o método X indefinido para argumentos de entrada de tipo 'double'

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?

Comentarios (0)

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
Comentarios (0)

La función en sí es código matlab válido. El problema debe ser otro.
Intente llamar a la función desde el directorio en el que se encuentra o añada ese directorio a su ruta de búsqueda utilizando addpath('pathname').

Comentarios (0)