Friday, July 31, 2009

deal

Deal 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

No comments:

Post a Comment