我在10个矩阵中有一些数据。每个矩阵都有不同的行数,但列数相同。
我想将所有10个矩阵组合成一个矩阵行,交错,这意味着该矩阵中的行将如下所示:
row 1 from matrix 0
...
row 1 from matrix 9
row 2 from matrix 0
...
row 2 from matrix 9
...
示例(包含3个矩阵):
Matrix 1: [1 2 3 ; 4 5 6; 7 8 9]
Matrix 2: [3 2 1 ; 6 5 4]
Matrix 3: [1 1 1 ; 2 2 2 ; 3 3 3]
Combined matrix will be: [1 2 3 ; 3 2 1 ; 1 1 1 ; 4 5 6 ; 6 5 4 ; 2 2 2 ; 7 8 9 ; 3 3 3]
答案 0 :(得分:1)
您可以在此处https://au.mathworks.com/matlabcentral/fileexchange/45757-interleave-vectors-or-matrices
下载interleave2
功能
z = interleave2(a,b,c,'row')
你可以在源代码中看到函数的工作方式
答案 1 :(得分:1)
这是一个通用解决方案,允许您将所需的多个矩阵(具有匹配的列数)放入起始cell array Result = {Matrix1, Matrix2, Matrix3};
index = cellfun(@(m) {1:size(m, 1)}, Result);
[~, index] = sort([index{:}]);
Result = vertcat(Result{:});
Result = Result(index, :);
:
1:m
这将为每个矩阵生成索引向量m
,其中RETURN *
是其行数。通过连接这些索引和它们sorting,我们可以得到一个新的索引,可以用来对vertically-concatenated矩阵集的行进行排序,使它们交错。