Matlab,结构到矩阵形式,矩阵以正确的方式定向

Fan*_*Fox 4 matlab struct matrix

我有一个名为poseSets的结构,它包含两件事:

  1. 提出
  2. 时间

所以我想做的是将姿势(姿势是一个4x4矩阵)放到一个大的长(4xN_Poses) x 4矩阵中.

所以让我们想象一下,我有一个10长的结构列表.通过这样做我几乎可以得到我的列表:

[structList.Pose]
Run Code Online (Sandbox Code Playgroud)

但这给了我一个(4xN) x 4矩阵,即:

1 2 3 4 | 1 2 3 4 | 1 2 3 4 | ...
5 6 7 8 | 5 6 7 8 | 5 6 7 8 | ...
3 5 6 8 | 3 5 6 8 | 3 5 6 8 | ...
0 0 0 1 | 0 0 0 1 | 0 0 0 1 | ...
Run Code Online (Sandbox Code Playgroud)

但我真正想要的是:

1 2 3 4
5 6 7 8
3 5 6 8
0 0 0 1
_______ 
1 2 3 4
5 6 7 8
3 5 6 8
0 0 0 1
_______ 
1 2 3 4
5 6 7 8
3 5 6 8
0 0 0 1
_______ 
: : : :
Run Code Online (Sandbox Code Playgroud)

现在我无法转置它,因为每个矩阵都会被单独转换,这将是错误的方式.

现在你可以用for循环来解决这个问题:

poseList = [];

for i = 1:length(PoseSets);
    poseList = [poseList; PoseSets(i).Pose];
end
Run Code Online (Sandbox Code Playgroud)

注意:poseList包含我想要的内容.

但我个人认为matlab是神奇的,你应该能够用英语写出你想要的东西,而matlab将会提供.有没有人知道一个班轮或更好的方法来做到这一点?

Rod*_*uis 6

是的,我也觉得这很烦人...... Matlab中的一些东西在行大小或列大小方面看起来并不一致.这是一个以colum-wise(= row-major)连接事物的示例,而绝大多数算法都是列专业.linspace或者通用范围(例如x = 0:5:100)是行主矩阵生成的另一个主要例子,x(:)然后再次是列主要...¯\(°_°)/¯

无论如何,最简单的解决方法是强制列主要连接:

cat(1, structList.Pose)
Run Code Online (Sandbox Code Playgroud)