-2
Сайте, у меня есть два вектора [A B C]
и [E F G]
генерация последовательности из двух векторов в MATLAB
Теперь я хочу, матрица, как этот ниже:
[A B C; E F G ; A F G; A F C; E B C; E B G]
Сайте, у меня есть два вектора [A B C]
и [E F G]
генерация последовательности из двух векторов в MATLAB
Теперь я хочу, матрица, как этот ниже:
[A B C; E F G ; A F G; A F C; E B C; E B G]
Вот это same code я упомянул для Cartesian product, адаптированное работать над наборами строк, вместо числовых данных:
sets = {{'A' 'E'}; % first position
{'B' 'F'}; % second position
{'C' 'G'}}; % third position
[val,~,idx] = cellfun(@unique, sets, 'Uniform',false);
indices = cell(numel(idx),1);
[indices{:}] = ndgrid(idx{:});
cartProd = cellfun(@(ind,v) v(ind(:)), indices, val, 'Uniform',false);
cartProd = vertcat(cartProd{:})';
Это будет работать для любого количества наборов, каждый с любым числом элементы.
В результате комбинации для примера выше (по одному в строке):
>> cartProd
cartProd =
'A' 'B' 'C'
'E' 'B' 'C'
'A' 'F' 'C'
'E' 'F' 'C'
'A' 'B' 'G'
'E' 'B' 'G'
'A' 'F' 'G'
'E' 'F' 'G'
Просьба представить некоторые подробности и примеры того, что вы пробовали до сих пор. – BartoszKP
Какой класс A, B, ...? Дубли, символы, ...? Кроме того, являются ли они скалярными? – Oleg
похоже, что вы делаете * декартово произведение * (хотя вам не хватает некоторых комбинаций: ABG, EFC). См. Следующее: http://stackoverflow.com/questions/4165859/matlab-generate-all-possible-combinations-of-the-elements-of-some-vectors – Amro