本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

deal

将输入分发到输出

从 MATLAB® 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) 将单一输入复制到请求的所有输出。它与 Y1 = XY2 = XY3 = X... 相同

[Y1, Y2, Y3, ...] = deal(X1, X2, X3, ...)Y1 = X1Y2 = X2Y3 = 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 - 从结构体字段中指定数据

使用 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 - 无需处理也能达到相同效果

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

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

在 R2006a 之前推出