我试图从 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 循环方法,但我发现它非常低效,因此希望有更好的方法。谢谢。
如果矩阵A的重复总是a矩阵B的行数,矩阵B的重复总是A的行数。那么,你可以使用这些函数kron
来repmat
实现你想要的。所以,在这个例子中,C可以用一行得到
[kron(A, ones(size(B, 1), 1)) repmat(B, [size(A, 1) 1])]
您可以使用索引来实现这一点
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(:),:)];