将矩阵折叠成列

Ann*_*ann 5 arrays matlab matrix reshape

我有一个2D矩阵,其中列的№总是3的倍数(例如250×27) -由于结果的重复组织(A,B,C,A,B,C,A,B,C,等等).我希望重新构造这个矩阵以创建一个包含3列的新矩阵 - 每个列包含每种类型的聚合数据(A,B,C)(例如2250×3).

因此,在矩阵中250×27,列中的所有数据1,4,7,10,13,16,19,22,25将被合并以形成所得到的重新形成矩阵的第一列.

生成的重新整形矩阵中的第二列将包含列中的所有数据2,5,8,11,14,17,20,23,26- 依此类推.

在MATLAB中有一个简单的方法吗?我只知道reshape如果我要合并的列是相邻(1,2,3,4,5,6)而不是非相邻(1,4,7,10,13,16)等.

Rod*_*uis 4

无耻地窃取@Divakar

B = reshape( permute( reshape(A,size(A,1),3,[]), [1,3,2]), [], 3 );
Run Code Online (Sandbox Code Playgroud)