Main Content

Seleccionar la sintaxis de comando o la sintaxis de función

MATLAB® cuenta con dos formas de llamar a las funciones, llamadas sintaxis de función y sintaxis de comando. En esta página se analizan las diferencias entre estos formatos de sintaxis y cómo evitar los errores frecuentes asociados a la sintaxis de comando.

Para obtener información preliminar acerca de cómo llamar a las funciones, consulte Llamada de funciones. Para obtener información relacionada con la definición de funciones, consulte Crear funciones en archivos.

Sintaxis de comando y sintaxis de función

En MATLAB, estas instrucciones son equivalentes:

load durer.mat        % Command syntax
load('durer.mat')     % Function syntax

En ocasiones, esta equivalencia se conoce como dualidad comando-función.

Todas las funciones admiten esta sintaxis de función estándar:

[output1, ..., outputM] = functionName(input1, ..., inputN)

En la sintaxis de función, las entradas pueden ser datos, variables e incluso expresiones de MATLAB. Si la entrada es un dato, como el valor numérico 2 o el arreglo de cadenas ["a" "b" "c"], MATLAB lo pasa a la función tal cual. Si la entrada es una variable, MATLAB pasará el valor que esta tenga asignado. Si la entrada es una expresión, como 2+2 o sin(2*pi), MATLAB la evaluará en primer lugar y pasará el resultado a la función. Si las funciones contienen salidas, puede asignarlas a variables como se muestra en el ejemplo de sintaxis anterior.

La sintaxis de comando es más sencilla, pero más limitada. Para utilizarla, separe las entradas con espacios en lugar de comas y no las encierre entre paréntesis.

functionName input1 ... inputN

Con la sintaxis de comando, MATLAB pasa todas las entradas como vectores de caracteres (es decir, como si estuvieran encerradas entre comillas simples) y no asigna las salidas a variables definidas por el usuario. Si la función devuelve una salida, se asigna a la variable ans. Para pasar un tipo de datos distinto a un vector de caracteres, utilice la sintaxis de función. Para pasar un valor que contenga un espacio, tiene dos opciones. Una es utilizar la sintaxis de función. La otra es encerrar el valor entre comillas simples. De lo contrario, MATLAB trata el espacio como si se separase el valor en varias entradas.

Si se asigna un valor a una variable, debe utilizar la sintaxis de función para pasar el valor a la función. La sintaxis de comando siempre pasa valores de entrada como vectores de caracteres y no puede pasar valores de variables. Por ejemplo, cree una variable y llame a la función disp con la sintaxis de función para pasar el valor de la variable:

A = 123;
disp(A)

Este código devuelve el resultado esperado,

123

No puede utilizar la sintaxis de comando para pasar el valor de A, ya que esta llamada

disp A

equivale a

disp('A')

y devuelve

A

Evitar errores de sintaxis frecuentes

Suponga que su área de trabajo contiene estas variables:

filename = 'accounts.txt';
A = int8(1:8);
B = A;

La siguiente tabla ilustra aplicaciones incorrectas frecuentes de la sintaxis de comando.

Este comando...Equivale a...Sintaxis correcta para pasar el valor
open filenameopen('filename')open(filename)
isequal A Bisequal('A','B')isequal(A,B)
strcmp class(A) int8strcmp('class(A)','int8')strcmp(class(A),'int8')
cd tempdircd('tempdir')cd(tempdir)
isnumeric 500isnumeric('500')isnumeric(500)
round 3.499round('3.499'), que equivale a round([51 46 52 57 57])round(3.499)
disp hello worlddisp('hello','world')

disp('hello world')

o

disp 'hello world'

disp "string"disp('"string"')disp("string")

Pasar nombres de variables

Algunas funciones esperan vectores de caracteres para los nombres de variables, como save, load, clear y whos. Por ejemplo,

whos -file durer.mat X

solicita información sobre la variable X en el archivo de ejemplo durer.mat. Este comando equivale a

whos('-file','durer.mat','X')

Cómo reconoce MATLAB una sintaxis de comando

Considere la posible instrucción ambigua

ls ./d

Esta podría ser una llamada a la función ls con './d' como su argumento. También podría representar una división elemento por elemento en el arreglo ls, con la variable d como el divisor.

Si emite esta instrucción en la línea de comandos, MATLAB utiliza reglas sintácticas, el área de trabajo actual y la ruta para determinar si ls y d son funciones o variables. Sin embargo, algunos componentes, como el analizador de código y el editor/depurador, funcionan sin referencias a la ruta ni al área de trabajo. Cuando se utilizan tales componentes, MATLAB utiliza reglas sintácticas para determinar si una expresión es una llamada a una función con la sintaxis de comando.

En general, cuando MATLAB reconoce un identificador (que podría designar una función o una variable), analiza los caracteres posteriores al identificador para determinar el tipo de expresión, como se indica a continuación:

  • Un signo igual (=) implica asignación. Por ejemplo:

    ls =d
  • Un paréntesis abierto después de un identificador implica una llamada a una función. Por ejemplo:

    ls('./d')
  • Un espacio después de un identificador, pero no después de un posible operador, implica una llamada a una función con la sintaxis de comando. Por ejemplo:

    ls ./d
  • Los espacios a ambos lados de un posible operador o la ausencia de ellos en ambos lados del operador implican una operación en las variables. Por ejemplo, estas instrucciones son equivalentes:

    ls ./ d
    
    ls./d

Por lo tanto, MATLAB trata la posible instrucción ambigua ls ./d como una llamada a la función ls con la sintaxis de comando.

Se recomienda evitar la definición de nombres de variables que entren en conflicto con las funciones frecuentes para evitar la ambigüedad y tener espacios en blanco uniformes alrededor de los operadores o llamar a funciones con paréntesis explícitos.

Consulte también

|