Matlab,所有细胞的组合

时间:2015-03-17 05:46:23

标签: matlab combinations

我需要组合不同长度的n(随机)数组的所有数据。 例如: a = [1 3 2 7 8],b = [2 5 3 9]和c = [5 6],也许我们有d,e,f等.... 我需要所有元素的组合,如: M = {[1 2 5],[1 2 6],[1 5 5],[1 5 6],[1 3 5],[1 3 6] ....}。

1 个答案:

答案 0 :(得分:1)

3个阵列的解决方案:

[A,B,C] = meshgrid(a, b, c);
M = [A(:), B(:), C(:)];

n 数组的解决方案迭代短维 n

a=[1 3 2 7 8];
b=[2 5 3 9];
c=[5 6];
d=[1 3 5];

arrays = { a, b, c, d };
M = a';

for i = 2:length(arrays)
    A1 = M;
    A2 = arrays{i}';
    [i1, i2] = meshgrid(1:length(A1), 1:length(A2));
    M = [A1(i1(:), :) A2(i2(:))];    
end