Matlab 从2矩阵中获取所有可能性

Matlab 从2矩阵中获取所有可能性,matlab,matrix,Matlab,Matrix,我试图从两个不同维度的矩阵中得到所有可能的结果。 说 及 输出 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可以用一条直线作

我试图从两个不同维度的矩阵中得到所有可能的结果。 说

输出

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(:),:)];

你所说的所有可能的结果是什么意思?您试图实现的操作是什么?不希望使用for循环。只需运行这些>>C(1,:)=[A(1,:),B(1,:)];>>C(2,:)=[A(1,:),B(2,:)];>>C(3,:)=[A(1,:),B(3,:)];>>C(4,:)=[A(2,:),B(1,:)];>>C(5,:)=[A(2,:),B(2,:)];>>C(6,:)=[A(2,:),B(3,:)];嗨,谢谢你的回复,就像问题中的例子一样。假设行是独立的。通过使用上面的示例,假设A=[M;N]和B=[X;Y;Z],结果是C=[mx;my;mz;nx;ny;nz]。对不起,我解释得很混乱,我不擅长解释。我不能逐行输入,因为在我写的程序中,矩阵A有300万行。天哪!!!!该死的,你很好。这项工作很好地缩短了运行时间。非常感谢!!!
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(:),:)];