2017-04-18 60 views
0

我有兩個1x6向量,我最終試圖總結一下,但是我需要在這樣做之前獲得這些向量的所有可能組合。向量看起來像這樣:如何在MATLAB中計算兩個1x6向量的所有可能組合?

V1=[a b c d e f]; 
V2=[A B C D E F]; 

我需要的是找到的變量仍將是一個1X6向量中的所有可能的組合。我一直搞亂了一段時間,我想我已經找到了使用各種矩陣的方法,但效率似乎非常低。我正在尋找的一個例子如下。

M=[a b c d e f; 
    A b c d e f; 
    A B c d e f; 
    A B C d e f; 
    A B C D e f; 
    A B C D E f; 
    A B C D E F; 
      . . .] 

依此類推,直到找到所有組合。不幸的是,我不是一個MATLAB的專家,因此我接觸的原因。我確信必須有比我一直在嘗試的更簡單的方法。我希望我的問題比較清楚。任何幫助深表感謝!謝謝!

回答

0

我用cellfun創建索引:

V1=['abcdef']; 
V2=['ABCDEF']; 
VV = [V1;V2]; 
l = length(V1); 
pows = 0:l-1; 
x = num2cell(2.^pows); 
L = x{end}; 
rows = cellfun(@(x) reshape([ones(x,L/x);2*ones(x,L/x)],[2*L 1]),x,'Uniformoutput',0); 
rows = cell2mat(rows); 
cols = repmat(1:l,[2*L 1]); 
idxs = sub2ind(size(VV),rows,cols); 
M = VV(idxs); 

,你會得到:

M = 
    abcdef 
    Abcdef 
    aBcdef 
    ABcdef 
    abCdef 
    AbCdef 
    aBCdef 
    ABCdef 
    abcDef 
    AbcDef 
    ... 
相關問題