Fan*_*Fox 4 matlab struct matrix
我有一个名为poseSets的结构,它包含两件事:
所以我想做的是将姿势(姿势是一个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将会提供.有没有人知道一个班轮或更好的方法来做到这一点?
是的,我也觉得这很烦人...... Matlab中的一些东西在行大小或列大小方面看起来并不一致.这是一个以colum-wise(= row-major)连接事物的示例,而绝大多数算法都是列专业.linspace或者通用范围(例如x = 0:5:100)是行主矩阵生成的另一个主要例子,x(:)然后再次是列主要...¯\(°_°)/¯
无论如何,最简单的解决方法是强制列主要连接:
cat(1, structList.Pose)
Run Code Online (Sandbox Code Playgroud)