0

我试图从 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 循环方法,但我发现它非常低效,因此希望有更好的方法。谢谢。

4

2 回答 2

1

如果矩阵A的重复总是a矩阵B的行数,矩阵B的重复总是A的行数。那么,你可以使用这些函数kronrepmat实现你想要的。所以,在这个例子中,C可以用一行得到

[kron(A, ones(size(B, 1), 1)) repmat(B, [size(A, 1) 1])]
于 2013-07-13T14:04:40.280 回答
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(:),:)];
于 2013-07-13T18:31:15.990 回答