MATLAB Function Reference
deal

Distribute inputs to outputs

Syntax

• ```[Y1, Y2, Y3, ...] = deal(X)
[Y1, Y2, Y3, ...] = deal(X1, X2, X3, ...)
```

Description

```[Y1, Y2, Y3, ...] = deal(X) ``` copies the single input to all the requested outputs. It is the same as `Y1 = X`, `Y2 = X`, `Y3 = X`, `...`

```[Y1, Y2, Y3, ...] = deal(X1, X2, X3, ...) ``` is the same as `Y1 = X1`;
`Y2 = X2`; `Y3 = X3`; ` ...`

Remarks

`deal` is most useful when used with cell arrays and structures via comma-separated list expansion. Here are some useful constructions:

```[S.field] = deal(X) ``` sets all the fields with the name `field` in the structure array `S` to the value `X`. If `S` doesn't exist, use `[S(1:m).field] = deal(X)`.

```[X{:}] = deal(A.field) ``` copies the values of the field with name `field` to the cell array `X`. If `X` doesn't exist, use `[X{1:m}] = deal(A.field)`.

```[Y1, Y2, Y3, ...] = deal(X{:}) ``` copies the contents of the cell array `X` to the separate variables `Y1, Y2, Y3, ...`

```[Y1, Y2, Y3, ...] = deal(S.field) ``` copies the contents of the fields with the name `field` to separate variables `Y1, Y2, Y3, ...`

Examples

Use `deal` to copy the contents of a 4-element cell array into four separate output variables.

• ```C = {rand(3) ones(3,1) eye(3) zeros(3,1)};
[a,b,c,d] = deal(C{:})

a =

0.9501   0.4860   0.4565
0.2311   0.8913   0.0185
0.6068   0.7621   0.8214

b =

1
1
1

c =

1   0   0
0   1   0
0   0   1

d =

0
0
0
```

Use `deal` to obtain the contents of all the name fields in a structure array:

• ```A.name = 'Pat'; A.number = 176554;
A(2).name = 'Tony'; A(2).number = 901325;
[name1,name2] = deal(A(:).name)

name1 =

Pat

name2 =

Tony
```

 Note    In many instances, you can access the data in cell arrays and structure fields without using the `deal` function.

These two commands perform the same operation as those used in the previous two examples, except that these commands do not require `deal`.

• ```[a,b,c,d] = C{:}
[name1,name2] = A(:).name
```

`cell`, `iscell`, `celldisp`, `struct`, `isstruct`, `fieldnames`, `isfield`, `orderfields`, `rmfield`, `cell2struct`, `struct2cell`