我在 File Exchange 站点 (Interleave Vectors or Matrices) 上编写了一个 MATLAB 函数,它完全可以满足您的需求以及更多功能。只需下载 .m 文件并将该文件放在与其他 .m 文件相同的目录中,或者将函数复制并粘贴到您的程序中。
此函数按行或列交错任意数量的向量或矩阵。如果输入只是向量,则无需指定方向。额外的元素/行/列附加在输出矩阵的末尾。提供的其他答案对于等长的向量非常具体,或者需要确保向量的方向正确。
函数使用示例:
1) 交错矩阵行
A = [1 2; 3 4] B = [5 6;7 8]
C = interleave2(A, B, 'row')
C = [1 2
5 6
3 4
7 8]
2) 矩阵的交错列
C = interleave2(A, B, 'col')
C = [1 5 2 6
3 7 4 8]
3) 交织向量(注意:输入向量不必相同方向)
A = [1 2 3 4] B = [5 6 7 8 9]'
C = interleave2(A, B)
C = [1 5 2 6 3 7 4 8 9]'
4) 交织 >2 个矩阵
A = [1 2;3 4] B = [5 6;7 8]
C = [9 10;11 12] D = [13 14;15 16]
E = interleave2(A, B, C, D, 'col')
E = [1 5 9 13 2 6 10 14
3 7 11 15 4 8 12 16]
5) 将 2 个矩阵的列与不相等的列交错
A = [1 2;3 4]
B = [5 6 7 8;9 10 11 12]
C = interleave2(A, B, 'col')
C = [1 5 2 6 7 8
3 9 4 10 11 12]
6) 交织 >2 个长度不等的向量
A = [1 2 3 4] B = [5 6 7]
C = [8 9 10 11 12 13]
D = interleave2(A, B, C)
D = [1 5 8 2 6 9 3 7 10 4 11 12 13]