Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Sintaxis de comando y sintaxis de función

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)

Si no requiere ningún valor de salida de la función y todos los valores de entrada son vectores de caracteres (es decir, texto entre comillas simples), puede utilizar esta sintaxis de comando más sencilla:

functionName input1 ... inputN

Con la sintaxis de comando, se separan los valores de entrada con espacios en lugar de con comas y no se introducen argumentos de entrada entre paréntesis. La sintaxis de comando siempre transfiere valores de entrada como vectores de caracteres. Para utilizar cadenas como valores de entrada, utilice la sintaxis de función. Si un vector de caracteres contiene un espacio, utilice la sintaxis de función.

Cuando el valor de entrada de una función es una variable, debe utilizar la sintaxis de función para transferir el valor a la función. La sintaxis de comando siempre transfiere valores de entrada como vectores de caracteres y no puede transferir valores de variables. Por ejemplo, cree una variable y llame a la función disp con la sintaxis de función para transferir 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 transferir 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 transferir 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 matlabrootcd('matlabroot')cd(matlabroot)
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')
disp "string"disp('"string"')disp("string")

Transferencia de 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 la carpeta ./d como su argumento. También podría solicitar una división elemento por elemento en el arreglo ls, con la variable d como el divisor.

Si emite una instrucción semejante en la línea de comandos, MATLAB puede acceder al área de trabajo actual y a 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. En tales casos, 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, la posible instrucción ambigua ls ./d es 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 cualquier ambigüedad.