nchoosek
.
a = [5 6 7]; b = [8 9]; c = [11 12 13]; d = [14 15 16]; e = [17 18 19];
N = 3;
x = {a,b,c,d,e};
y = nchoosek(x,N);
И у вас есть все комбинации ваших массивов принятых N
в то время в массиве ячеек. Каждая строка i
ячейки x
представляет собой комбинацию, так, чтобы его обратно, как вектор-строка просто сделать
horzcat(y{i,:})
Или, если вы хотите, чтобы получить их и поместить их в массив ячеек размером n_combs
n_combs = size(y,1);
out = cell(0,n_combs);
for i = 1 : n_combs
out{i} = horzcat(1, y{i,:});
end
Там нет ограничений на размер массивов, которые вы хотите объединить, например, вы можете комбинировать
a = [5 7]; b = [8 9]; c = [11]; d = [20 14 15 16]; e = [17 18 19];
Однако, если необходимо объединить все комбинации в матрицу, тогда массивы должны быть одного размера. В этом случае ответ Луиса Мендо выполняет эту работу.
И, наконец, если повторения разрешены, используйте nmultichoosek вместо nchoosek
.
Итак, объедините в группы по 3 без повторений? Все ли эти векторы длин 3? – Divakar