Contenido principal

Resolver errores: Función o variable no reconocida

Problema

Un mensaje de error frecuente indica que MATLAB® no puede encontrar un archivo de programa o una variable específicos:

Función o variable "x" no reconocida.

Existen muchas situaciones que pueden ocasionar este error. En este tema se describe cómo identificar y abordar situaciones habituales.

Posibles soluciones

Buscar errores tipográficos

Una de las causas más frecuentes es escribir mal el nombre de la función o variable. Es fácil cometer un error que no se detecta fácilmente, en especial con los nombres largos o los que contienen caracteres similares (como la letra l y el número uno).

A veces, si escribe mal un nombre, se muestra una sugerencia del nombre en la ventana de comandos. Por ejemplo, se produce un error con este comando porque incluye una letra en mayúscula en el nombre de la función.

accumArray(1,10)
Unrecognized function or variable 'accumArray'.
 
Did you mean:
>> accumarray(1,10)

Pulse Enter para ejecutar el comando sugerido o Esc para descartarlo.

Comprobar las variables del área de trabajo

Para comprobar si una variable que desea utilizar está disponible en el área de trabajo actual, utilice el comando whos.

Si la variable no aparece en la lista, estas son las posibles causas:

  • El código para crear la variable aún no se ha ejecutado en la sesión actual o una llamada a los comandos clear o clearvars ha eliminado la variable. Si ha creado la variable previamente, el código suele estar disponible en el historial de comandos, al que puede acceder desde la línea de comandos utilizando la tecla de flecha arriba.

  • Si está editando un archivo de script, es posible que el código esté intentando utilizar la variable antes de asignar un valor a esa variable. Cuando se visualiza un archivo en el editor, puede hacer clic en el nombre de una variable para encontrar todas las referencias a la variable y comprobar el orden de las operaciones.

    In a script file, the myvar variable name is highlighted throughout the code. Indicators on the right side of the Editor show where the name occurs. Pointing to an indicator shows the corresponding line number.

Si la variable se encuentra en el área de trabajo y está escribiendo una función que genera el error, compruebe que está pasando la variable a la función como argumento de entrada. Las funciones no utilizan el área de trabajo básica, por lo que las variables deben pasarse explícitamente al área de trabajo de la función. Por ejemplo, esta función no puede encontrar la variable c aunque exista en el área de trabajo básica.

function y = myfunction(x)
 y = x + c;
end

Para solucionar este problema, añada c a la línea de definición de la función.

function y = myfunction(x,c)
 y = x + c;
end

Luego, incluya la variable en la llamada a la función.

Y = myfunction(X,c);

Para obtener más información acerca de las áreas de trabajo, consulte Áreas de trabajo básica y de función.

Comprobar la disponibilidad de la función

Si el elemento no reconocido es una función y no la conoce, compruebe si está incluida en el software instalado.

Primero, busque la función en la documentación de MathWorks más reciente. Si no hay documentación sobre esa función, consulte otros recursos, como File Exchange de MathWorks®, para localizar el software que incluye la función.

Si encuentra la función en la documentación de MathWorks:

  1. Ejecute el código de ejemplo de la documentación para comprobar si la función está disponible. Si el código no genera el error Unrecognized function, salte a Comprobar entradas de funciones para continuar diagnosticando el problema.

  2. Compruebe si la función es más reciente que su versión del software. Para averiguar cuándo se introdujo una función, consulte la sección Historial de versiones de su página de referencia.

    Version History sections appear before See Also sections and include text in the form of "Introduced in" with the release number.

    Para comprobar su versión de MATLAB, utilice el comando version. La versión aparece entre paréntesis.

    version
    ans =
    
        '24.1.0.2661297 (R2024a) Update 5'
    
  3. Compruebe si el producto necesario está instalado. El producto necesario se encuentra en el panel izquierdo de la página de documentación.

    Sample doc page with the product name "Text Analytics Toolbox" in the left pane

    Para comprobar si ese producto está instalado, utilice el comando ver.

    ver
    .
    .
    .
    MATLAB                                          Version 24.1        (R2024a)
    Deep Learning Toolbox                           Version 24.1        (R2024a)
    Statistics and Machine Learning Toolbox         Version 24.1        (R2024a)
    Text Analytics Toolbox                          Version 24.1        (R2024a)
    

    Si el producto no aparece en la lista, es probable que no esté instalado. Para obtener más información sobre la instalación de productos, consulte Obtener y administrar complementos.

  4. Si ha instalado el producto, pero no aparece en una lista regenerada desde ver, actualice la caché de la toolbox. En la pestaña Home, en la sección Environment, haga clic en Settings. Seleccione MATLAB > General y, después, haga clic en Update Toolbox Path Cache.

  5. Si el producto sigue sin aparecer en la lista de ver, asegúrese de que dispone de una licencia activa para esa toolbox. Utilice el comando license para mostrar las licencias activas actualmente y visite el Centro de licencias para ver los productos asociados. Para obtener más información sobre cómo gestionar licencias, consulte Gestionar sus licencias.

Comprobar entradas de funciones

Llamar a una función disponible con las variables existentes puede generar un error cuando las entradas tienen un formato que la función no puede reconocer. Consulte la documentación de la función para ver las sintaxis y los argumentos de entrada esperados. Puede acceder directamente a la documentación de la función con el comando doc.

doc functionName

Hay dos problemas habituales que pueden ser difíciles de identificar: usar expresiones de indexación inesperadas y omitir una entrada de objeto.

Indexación inesperada.  Si escribe un signo de dos puntos en la posición de un argumento de entrada, MATLAB interpreta el código como una expresión de indexación en lugar de una llamada a función. Por ejemplo, la función isnumeric acepta un solo arreglo de entrada, isnumeric(A). En muchos casos, isnumeric puede detectar cuándo hay varios argumentos.

isnumeric(A,B)
Error using isnumeric
Too many input arguments.

Sin embargo, con dos puntos en lugar de un argumento, MATLAB interpreta isnumeric como una variable indefinida en lugar de una función.

isnumeric(A,:)
Unrecognized function or variable 'isnumeric'.

Entrada de objeto omitida.  Los métodos de objetos suelen documentarse utilizando la sintaxis de función con el formato method(object,inputs). Si suele utilizar la notación de puntos para métodos con el formato object.method(inputs), asegúrese de incluir el objeto como primera entrada cuando utilice el formato de función.

Hacer que la función esté disponible

Cuando escriba una función a la que tenga previsto llamar desde la línea de comandos o desde otro archivo:

  • Guarde la función en un archivo con el mismo nombre que la función. Si los nombres de la función y del archivo son diferentes, el nombre del archivo anula el nombre de la función.

    Por ejemplo, guarde una función llamada curveplot en un archivo llamado curveplot con la extensión .m o .mlx. Si la función curveplot está en un archivo llamado curveplotfunction.m, las llamadas a la función curveplot fallan.

  • Asegúrese de que la función sea la primera o la única función definida en el archivo y de que el archivo no incluya código fuera de las definiciones de funciones. Si la función no cumple estas condiciones, es una función local y no se puede llamar desde fuera de ese archivo. Para obtener más información, consulte Funciones locales.

Para obtener más información sobre la escritura de funciones, consulte Crear funciones en archivos.