语法:
[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) 将单一输入复制到请求的所有输出。它与 Y1 = X、Y2 = X、Y3 = X、... 相同
[Y1, Y2, Y3, ...] = deal(X1, X2, X3, ...) 与 Y1 = X1、Y2 = X2、Y3 = X3、 ... 相同
示例 1 - 从元胞数组中指定数据
使用 deal 将 4 元素元胞数组的内容复制到 4 个单独的输出变量。
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 - 从结构体字段中指定数据
A.name = "Pat"; A.number = 176554;
A(2).name = "Tony"; A(2).number = 901325;
[name1,name2] = deal(A(:).name)
name1 =
Pat
name2 =
Tony
示例 3 - 无需处理也能达到相同效果
从 MATLAB 7.0 版软件开始,在大多数情况下,无需使用 deal 函数即可访问元胞数组和结构体字段的内容。如下所示的两个命令执行与前两个示例中所用函数相同的操作,不同的是这些命令不需要使用 deal。
[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, ...