Matlab,所有细胞的组合

Matlab, combinations of all cells

我需要合并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] ....}。

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