Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Resolver errores: variable o función 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

Verifique la ortografía del nombre de la variable o función

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 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 ocurra esto, pulse Intro para ejecutar el comando sugerido o Esc para descartarlo.

Verificar que las entradas se corresponden con la sintaxis de función

Los métodos de objetos suelen llamarse con la sintaxis de función; por ejemplo, method(object,inputs). Como alternativa, pueden llamarse con notación de puntos; por ejemplo, object.method(inputs). Un error común es mezclar estas sintaxis. Por ejemplo, podría llamar al método con la sintaxis de función, pero proporcionar las entradas con la sintaxis de notación de puntos y dejar el objeto como una entrada; por ejemplo, method(inputs). Para evitarlo, cuando llame al método de un objeto, compruebe que ha especificado el objeto primero, ya sea con la primera entrada de la sintaxis de función o con el primer identificador de la notación de puntos.

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

Cuando escribe una función, establece su nombre al escribir su 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 es la versión correcta

Si no puede utilizar una función integrada de MATLAB ni sus toolboxes, asegúrese de que la función está instalada y de que es 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. Como alternativa, consulte Identificar dependencias de un programa para los pasos a seguir para identificar las toolboxes de las que depende una función.

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, debe instalarla para usarla. Para obtener ayuda con la instalación de 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 cuenta con una ruta de archivos 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 los 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 usar forma parte de una toolbox, verifique que la toolbox está disponible con 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 de 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 el archivo de función, se lo presenta con la ruta. Puede añadir ese archivo a la ruta utilizando la función addpath. Si no, compruebe que la toolbox necesaria está instalada y que es la versión correcta.

Confirmar que la licencia está activa

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