如何在matlab

时间:2016-05-17 13:59:57

标签: matlab matrix reshape

A是一个8 - by - 8矩阵。我想取最后6行并将它们放在第一行和第二行旁边,以便矩阵A成为2 - by - 32

编辑:

A =

12,6872713121256    12,0602414786595    10,3270660536998    7,80915144314411    10,0045468077317    9,60906828665612    8,31320998311920    6,36510295973004
12,0602414786595    12,6872713121256    12,0602414786595    10,3270660536998    9,38969514490848    10,0045468077317    9,60906828665612    8,31320998311921
10,3270660536998    12,0602414786595    12,6872713121256    12,0602414786595    7,92932345092466    9,38969514490848    10,0045468077317    9,60906828665611
7,80915144314411    10,3270660536998    12,0602414786595    12,6872713121256    5,89043977575553    7,92932345092466    9,38969514490847    10,0045468077317
10,0045468077317    9,38969514490848    7,92932345092466    5,89043977575553    7,90694573827892    7,48897349750382    6,39213878381770    4,80849938907536
9,60906828665612    10,0045468077317    9,38969514490848    7,92932345092466    7,48897349750382    7,90694573827892    7,48897349750382    6,39213878381770
8,31320998311920    9,60906828665612    10,0045468077317    9,38969514490847    6,39213878381770    7,48897349750382    7,90694573827892    7,48897349750382
6,36510295973004    8,31320998311921    9,60906828665611    10,0045468077317    4,80849938907536    6,39213878381770    7,48897349750382    7,90694573827892
当我输入这段代码时,Dans解决方案没有给出我想要的东西:Ry=reshape(A.',[],2).';

我希望将第一行和第二行保留在那里,我只想移动其他行(行从3到8)并将它们放在第1行和第2行旁边。这样第3行就是下一行到第1行..第4行在第2行旁边。第5行在第1行和第3行旁边...第6行在第2行和第4行旁边...依此类推......谢谢

1 个答案:

答案 0 :(得分:1)

在转置(必要因为MATLAB使用column-major索引)到3D矩阵后使用reshape。然后置换矩阵以将新的第三维与第二维交换,然后重新整形并转置回来

reshape(permute(reshape(A.',8,2,[]),[1,3,2]),[],2).'