2017-04-18 14 views
0

私は最終的に合計しようとしている2つの1x6ベクトルを持っていますが、そうする前にこれらのベクトルのすべての組み合わせを取得する必要があります。ベクターには、そのようになります。私は必要MATLABで2つの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 
    ... 
関連する問題