2017-04-18 12 views
0

나는 두 개의 1x6 벡터를 가지고 있는데, 결국 합산하려고한다. 그러나 그렇게하기 전에 가능한 모든 벡터 조합을 얻어야한다. 벡터는과 같이 보일 것이다 : 내가해야 할 것은 1 × 벡터 남아 변수의 가능한 모든 조합을 찾는 것입니다MATLAB에서 두 개의 1x6 벡터를 가능한 모든 조합으로 계산하는 방법은 무엇입니까?

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

. 나는 잠시 동안 주위를 어지럽 혔고 나는 다양한 행렬을 사용하여 길을 찾았지만 매우 비효율적 인 것처럼 보였습니다. 내가 찾고있는 예는 다음과 같습니다.

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 
    ...