快好知 kuaihz

[转载]matlab中给多个变量赋值——deal函数

语法:

[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 - 从结构体字段中指定数据

使用 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, ...

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:赋值  赋值词条  变量  变量词条  函数  函数词条  多个  多个词条  转载  转载词条  
观点

 科学互补性的新形态

科学互补性的新形态武夷山 意大利比萨大学工程学院电气系统和自动化系的Andrea Bonaccoesi在Minerva杂志2010年第4期发表论文,N...(展开)

观点

 我渴望成为优秀的大学教师

我渴望成为优秀的大学教师 这几天我一直在总结自己15年来作为大学教师所取得的点滴成绩,更在反思和剖析自我。今天,是我成为大学教师第15周年的纪念日,借...(展开)