2017-04-18 89 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 
    ...