荣斋居士分享 http://blog.sciencenet.cn/u/dalianwang

博文

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

已有 8787 次阅读 2019-6-25 07:20 |个人分类:软件学习|系统分类:教学心得| matlab, 变量赋值 |文章来源:转载

语法:

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







https://wap.sciencenet.cn/blog-2089193-1186705.html

上一篇:[转载]提升MATLAB运行的技巧
下一篇:[转载]2019年交通领域期刊分区及影响因子
收藏 IP: 129.137.96.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-18 14:51

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部