Contenido principal

deal

Distribuir entradas a salidas

Descripción

Nota

En la mayoría de los casos, no necesita la función deal. En su lugar, utilice indexación de arreglos y listas separadas por comas cuando acceda al contenido de arreglos de celdas y campos de estructura, como se muestra en estas sintaxis.

[A1,...,An] = C{:}
[B1,...,Bn] = S(:).field

Para obtener más información, consulte Listas separadas por comas.

No obstante, en algunos casos deal puede resultar útil si necesita varias salidas de una operación que normalmente devuelve una única salida. Por ejemplo, puede utilizar deal para:

  • Asignar valores a varias celdas de un arreglo de celdas.

  • Asignar valores a un campo de un arreglo de estructura no escalar.

  • Devolver varias salidas de una función anónima.

[B1,...,Bn] = deal(A1,...,An) copia los argumentos de entrada A1,...,An y los devuelve como argumentos de salida B1,...,Bn. Es lo mismo que B1 = A1, …, Bn = An. En esta sintaxis, los números de los argumentos de entrada y salida deben coincidir.

ejemplo

[B1,...,Bn] = deal(A) copia el argumento de entrada único A y lo devuelve como argumentos de salida B1,...,Bn. Es lo mismo que B1 = A, …, Bn = A. En esta sintaxis, puede especificar un número arbitrario de argumentos de salida.

Ejemplos

contraer todo

Cree un arreglo de celdas de 1 por 3 cuyas celdas estén vacías.

C = cell(1,3)
C=1×3 cell array
    {0×0 double}    {0×0 double}    {0×0 double}

Cree tres variables. Asigne sus valores a las celdas de C utilizando deal. La sintaxis C{:} crea una lista separada por comas de celdas a cuyo contenido se puede acceder usando llaves. Puede tratar esta lista como una lista de argumentos de salida cuando llame a deal.

A1 = 100;
A2 = "foo";
A3 = 1:5;
[C{:}] = deal(A1,A2,A3)
C=1×3 cell array
    {[100]}    {["foo"]}    {[1 2 3 4 5]}

También puede usar índices para asignar valores a un subconjunto de celdas. Por ejemplo, cree un arreglo de celdas D de 1 por 5.

D = cell(1,5)
D=1×5 cell array
    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}

Esta sintaxis asigna valores a las primeras tres celdas de D y deja el resto de celdas vacías.

[D{1:3}] = deal(A1,A2,A3)
D=1×5 cell array
    {[100]}    {["foo"]}    {[1 2 3 4 5]}    {0×0 double}    {0×0 double}

Primero, cree un arreglo de estructura de 1 por 3 con un campo.

S.a = [];
S(2).a = [];
S(3).a = [];
S.a
ans =

     []


ans =

     []


ans =

     []

Después, asigne valores a los campos con deal. La sintaxis S.a crea una lista de campos separados por comas, uno por cada estructura del arreglo de estructuras. Puede tratar esta lista como una lista de argumentos de salida cuando llame a deal.

A1 = 100;
A2 = "foo";
A3 = 1:5;
[S.a] = deal(A1,A2,A3)
S=1×3 struct array with fields:
    a

S.a
ans = 
100
ans = 
"foo"
ans = 1×5

     1     2     3     4     5

Si el arreglo de estructuras no existe, puede crearlo especificando suficientes índices para dar cabida a los valores que se asignan. También puede usar índices para asignar valores a los campos de un subconjunto de estructuras. Por ejemplo, si S fuera un arreglo de estructuras de 1 por 6, esta sintaxis asignaría valores a las primeras tres estructuras.

[S(1:3).a] = deal(A1,A2,A3)
S=1×3 struct array with fields:
    a

S.a
ans = 
100
ans = 
"foo"
ans = 1×5

     1     2     3     4     5

Puede crear una función anónima para definir una función sin crear un archivo de programa, siempre y cuando la función contenga una única instrucción ejecutable. Una manera de devolver varios argumentos de salida de una función anónima es llamar a la función deal como única instrucción ejecutable.

Cree una función anónima que devuelva un número y su cuadrado, cubo y cuarta potencia usando la función deal. Para almacenar la función anónima, asígnela a un identificador de función.

powers1234 = @(x) deal(x,x.^2,x.^3,x.^4)
powers1234 = function_handle with value:
    @(x)deal(x,x.^2,x.^3,x.^4)

Llame a powers1234 y asigne sus salidas a variables. Debe asignar todas las salidas devueltas por deal.

[X1,X2,X3,X4] = powers1234(2)
X1 = 
2
X2 = 
4
X3 = 
8
X4 = 
16

Para descartar salidas no deseadas, utilice el operador ~.

[~,~,X3,X4] = powers1234(2)
X3 = 
8
X4 = 
16

Argumentos de entrada

contraer todo

Arreglos de entrada, donde n es el número de entradas.

Argumentos de salida

contraer todo

Arreglos de salida, donde n es el número de salidas.

Sugerencias

  • Para convertir un arreglo de celdas a un arreglo de estructuras o un arreglo de estructuras a un arreglo de celdas, utilice las funciones cell2struct y struct2cell, no deal.

Capacidades ampliadas

expandir todo

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido antes de R2006a