Main Content

Resolver el error: función o variable sin definir

Problema

Es posible que se encuentre el siguiente mensaje de error, o uno similar, al trabajar con funciones o variables en MATLAB®:

Variable o función "x" sin definir.

Estos errores suelen indicar que MATLAB no encuentra una variable concreta o el archivo de programa de MATLAB en el directorio actual o en la ruta de búsqueda.

Posibles soluciones

Comprobar si el nombre de la función o de la variable está bien escrito

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

A menudo, cuando se escribe mal una función de MATLAB, se muestra una sugerencia del nombre de la función 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
Undefined function or variable 'accumArray'.
 
Did you mean:
>> accumarray

Cuando esto suceda, pulse Enter para ejecutar el comando sugerido o Esc para descartarlo.

Comprobar si las entradas se corresponden con la sintaxis de la función

Comúnmente, se llama a los métodos del objeto mediante la sintaxis de la función: por ejemplo, method(object,inputs). De manera alternativa, también se los puede llamar mediante la notación de puntos: por ejemplo, object.method(inputs). Un error habitual es mezclar estas sintaxis. Por ejemplo, es posible que llame al método utilizando la sintaxis de la función, pero proporciona las entradas según la sintaxis de la notación de puntos y deja el objeto fuera como una entrada: por ejemplo, method(inputs). Para evitar que suceda esto, cuando llame a un método del objeto, asegúrese de que especifica el objeto primero, o bien a través de la primera entrada de la sintaxis de la función o bien a través del primer identificador de la notación de puntos.

Asegurarse de que el nombre de función coincide con el nombre de archivo

Cuando escribe una función, define su nombre al escribir la línea de definición de función. Este nombre siempre debe coincidir con el nombre del archivo en el que se guarda. Por ejemplo, si crea una función llamada curveplot,

function curveplot(xVal, yVal)
     - program code -

debe definir el nombre curveplot.m para el archivo que contiene dicha función. Si crea un archivo pcode para la función, defina el nombre curveplot.p para dicho archivo. En caso de que los nombres de la función y del archivo entren en conflicto, el nombre del archivo anula el nombre dado a la función. En este ejemplo, si guarda la función curveplot en un archivo llamado curveplotfunction.m, los intentos para invocar la función con el nombre de la función no tendrán ningún resultado:

curveplot
Variable o función "curveplot" sin definir.

Si se encuentra este problema, cambie el nombre de la función o el nombre del archivo para que sean iguales.

Para localizar el archivo que define esta función, use la utilidad Find Files de MATLAB como se indica a continuación:

  1. En la pestaña Home, en la sección File, haga clic en Find Files.

  2. En Find files named, escriba *.m.

  3. En Find files containing text, escriba el nombre de la función.

  4. Haga clic en el botón Find.

Asegurarse de que la toolbox necesaria está instalada y que se trata de la versión correcta

Si no puede utilizar una función integrada de MATLAB o sus toolboxes, asegúrese de que la función está instalada y que se trata de la versión correcta.

Si no sabe qué toolbox contiene la función que necesita, busque la documentación de la función en https://www.mathworks.com/help. El nombre de la toolbox aparece en la parte superior de la página de referencia de la función. De manera alternativa, puede consultar los pasos para identificar las toolboxes de las que depende una función en Identify Program Dependencies.

Una vez que sepa a qué toolbox pertenece la función, utilice la función ver para ver qué toolboxes están instaladas en el sistema en el que ejecuta MATLAB. La función ver muestra una lista de todos los productos de MathWorks® instalados actualmente. Si encuentra la toolbox que necesita en el resultado que muestra ver, la toolbox está instalada. Si no puede, es necesario que la instale para utilizarla. Para obtener ayuda para instalar los productos de MathWorks, consulte Instalar el administrador de licencias en el servidor de licencias.

Comprobar la ruta utilizada para acceder a la toolbox de la función

Sugerencia

Si tiene una ruta de archivo personalizada, este paso la eliminará.

La ruta de búsqueda de MATLAB es un subconjunto de todas las carpetas del sistema de archivos. MATLAB utiliza la ruta de búsqueda para localizar de forma eficiente archivos que se utilizan con productos de MathWorks. Para obtener más información, consulte ¿Qué es la ruta de búsqueda de MATLAB?.

Si la función que intenta utilizar forma parte de una toolbox, compruebe que la toolbox está disponible mediante ver.

Dado que MATLAB guarda la información de las toolboxes en un archivo caché, primero tiene que actualizar esta caché y restablecer la ruta.

  1. En la pestaña Home, en la sección Environment, haga clic en Preferences.

    Aparece el cuadro de diálogo Preferences.

  2. En la página MATLAB > General, seleccione Update Toolbox Path Cache.

  3. En la pestaña Home, en la sección Environment, seleccione Set Path.

    Se abre el cuadro de diálogo Establecer ruta.

  4. Seleccione Default.

    Se abre un pequeño cuadro de diálogo en el que se le advierte que perderá la configuración actual de la ruta si continúa. Seleccione Yes si decide continuar.

Ejecute ver para comprobar si la toolbox está instalada. Si no está instalada, es posible que tenga que volver a instalar esta toolbox para utilizar esta función. Para obtener más información acerca de la instalación de una toolbox, consulte Cómo puedo instalar toolboxes adicionales en una instalación existente de MATLAB.

Una vez que ver muestre la toolbox, ejecute el siguiente comando para comprobar si encuentra la función:

which -all <functionname>

sustituyendo <functionname> por el nombre de la función. Si MATLAB encuentra su archivo de función, se lo presenta con la ruta que lleva hasta él. Puede agregar ese archivo a la ruta utilizando la función addpath. Si no lo encuentra, asegúrese de que la toolbox necesaria está instalada y que se trata de la versión correcta.

Confirmar si la licencia está activa

Si no puede utilizar una función integrada de una toolbox de MATLAB y ha confirmado que la toolbox está instalada, asegúrese de que cuenta con una licencia activa para esa toolbox. Utilice license para mostrar las licencias que actualmente están activas. Si necesita más soporte para gestionar las licencias, consulte Gestionar sus licencias.