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

use*_*474 4 matlab matrix vectorization

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

A.name
A.grade
A.attendance
Run Code Online (Sandbox Code Playgroud)

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

A(1:5).attendance = B
Run Code Online (Sandbox Code Playgroud)

其中B是5x5矩阵

Lui*_*ndo 6

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

C = mat2cell(B, ones(size(B,1),1), size(B,2))
Run Code Online (Sandbox Code Playgroud)

然后你可以分配如下

[A(1:size(B,2)).attendance] = C{:};
Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 6

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

[A.attendance] = B{:}
Run Code Online (Sandbox Code Playgroud)

将工作.您可以将5- by- 5双矩阵B转换为所需的格式,如下所示:

B_cell = mat2cell(B, ones(size(B,1),1),size(B,2))
Run Code Online (Sandbox Code Playgroud)

或跳过临时变量并使用deal:

[A.attendance] = deal(mat2cell(B, ones(size(B,1),1),size(B,1)))
Run Code Online (Sandbox Code Playgroud)