不使用for循环将矩阵添加到结构列中?

时间:2015-11-10 11:43:20

标签: matlab matrix vectorization

是否可以在不使用for-loop的情况下将矩阵添加到结构“列”?例如,我有一个包含3个字段的结构

A.name
A.grade
A.attendance

现在A.attendance需要1x5矩阵。如果我有一个5x5矩阵,我可以直接将它插入结构A的5行吗?

之类的东西
A(1:5).attendance = B

其中B是5x5矩阵

2 个答案:

答案 0 :(得分:6)

您可以将B转换为其行的单元格数组

C = mat2cell(B, ones(size(B,1),1), size(B,2))

然后你可以分配如下

[A(1:size(B,2)).attendance] = C{:};

答案 1 :(得分:6)

如果B实际上是一个5元素的单元格数组,其中每个元素都是 1 -by- 5 矩阵(实际上每个元素都可以包含任何内容) ,那么

[A.attendance] = B{:}

会奏效。您可以将 5 -by- 5 双矩阵B转换为所需的格式,如下所示:

B_cell = mat2cell(B, ones(size(B,1),1),size(B,2))

或跳过临时变量并使用deal

[A.attendance] = deal(mat2cell(B, ones(size(B,1),1),size(B,1)))