# deal

Distribute inputs to outputs

Beginning with MATLAB® Version 7.0 software, you can access the contents of cell arrays and structure fields without using the `deal` function. See Example 3, below.

## Syntax

```[Y1, Y2, Y3, ...] = deal(X) [Y1, Y2, Y3, ...] = deal(X1, X2, X3, ...) [S.field] = deal(X) [X{:}] = deal(A.field) [Y1, Y2, Y3, ...] = deal(X{:}) [Y1, Y2, Y3, ...] = deal(S.field) ```

## 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`; ` ...`

## Examples

### Example 1 — Assign Data From a Cell Array

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```

### Example 2 — Assign Data From Structure Fields

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```

### Example 3 — Doing the Same Without deal

Beginning with MATLAB Version 7.0 software, you can, in most cases, access the contents of cell arrays and structure fields without using the `deal` function. The two commands shown below 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```

## Tips

`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, ...`