我正试图从2个不同维度矩阵中获得所有可能的结果。 说,
A=[1 2 3 4;2 3 4 5]
和
B=[11 12; 13 14; 15 16]
输出
C=[1 2 3 4 11 12; 1 2 3 4 13 14; 1 2 3 4 15 16; 2 3 4 5 11 12; 2 3 4 5 13 14; 2 3 4 5 15 16]
我尝试过使用for循环方法,但我发现效率很低,因此希望有更好的方法。 谢谢。
答案 0 :(得分:1)
如果矩阵A的重复始终是矩阵B的行数,则矩阵B的重复始终是A的行数。然后,您可以使用函数kron
和{{1}实现你想要的。因此,在这个例子中,C可以用单行获得
repmat
答案 1 :(得分:0)
您可以使用索引来实现此目的
C=[A(repmat(1:size(A,1), 1, size(B,1)), :) B(repmat(1:size(B,1), 1, size(A,1)), :)];
更易读的版本
[X,Y]=meshgrid(1:size(A,1), 1:size(B,1));
C=[A(X(:),:) B(Y(:),:)];