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矩阵
您可以转换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)
如果你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)