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.
[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)
[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
; ...
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
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
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, ...
cell
| cell2struct
| celldisp
| fieldnames
| iscell
| isfield
| isstruct
| orderfields
| rmfield
| struct
| struct2cell