ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

deal

    メモ:   MATLAB® Version 7.0 ソフトウェア以降では、関数 deal を使用せずに、セル配列および構造体フィールドの内容にアクセスできます。以下の「例 3」を参照してください。

構文

[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) は、要求される出力すべてに 1 つの入力をコピーします。これは、Y1 = XY2 = XY3 = X... と同じです。

[Y1, Y2, Y3, ...] = deal(X1, X2, X3, ...) は、Y1 = X1Y2 = X2Y3 = X3 ... と同じです。

例 1 — セル配列からデータを割り当てる

4 要素からなるセル配列の内容を、4 個の別個の出力変数にコピーするために、関数 deal を使います。

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

例 2 — 構造体フィールドからデータを割り当てる

構造体配列内のすべての name フィールドの内容を取り出すために、関数 deal を使います。

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

name1 =
   Pat

name2 =
   Tony

例 3 — 同様の操作を関数 deal を使わずに行う

MATLAB Version 7.0 ソフトウェア以降では、ほとんどの場合、関数 deal を使用せずに、セル配列および構造体フィールドの内容にアクセスできます。以下に示す 2 つのコマンドは、関数 deal を使用する必要がないという点を除き、上記の 2 つの例で使用されている操作と同じ操作を実行します。

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

詳細

すべて折りたたむ

ヒント

関数 deal は、コンマで区切られた拡張リストによるセル配列や構造体を使うときに、特に便利です。いくつかの便利な構造体があります。

[S.field] = deal(X) は、構造体配列 S 内の field という名前のフィールドすべてに、値 X を設定します。S が存在しなければ、[S(1:m).field] = deal(X) を使います。

[X{:}] = deal(A.field) は、field という名前のフィールドの値を、セル配列 X にコピーします。X が存在しなければ、[X{1:m}] = deal(A.field) を使います。

[Y1, Y2, Y3, ...] = deal(X{:}) は、セル配列 X の内容を、別個の変数 Y1, Y2, Y3, ... にコピーします。

[Y1, Y2, Y3, ...] = deal(S.field) は、field という名前のフィールドの内容を、別個の変数 Y1, Y2, Y3, ... にコピーします。

この情報は役に立ちましたか?