2013-08-17 84 views
-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] 
+1

請提供一些更多的細節,你什麼都嘗試過的例子至今。 – BartoszKP

+0

A,B,...是什麼類?雙打,字符,...?另外,他們是標量? – Oleg

+1

看起來你正在做*笛卡爾產品*(儘管你缺少一些組合:ABG,EFC)。看到這裏:http://stackoverflow.com/questions/4165859/matlab-generate-all-possible-combinations-of-the-elements-of-some-vectors – Amro

回答

1

這裏是我爲Cartesian product提到same code,適於使用字符串而不是數字數據:

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'