2016-11-17 7 views
1

私はいくつかのベクトルまたはベクトルのリストを持ち、可能なすべての連結を構成したいと考えています。次に例を示します。ベクトルの要素/ベクトル/リストのすべての可能な組み合わせ(デカルト積)

a1=4; 
a2=[1,6;1,9;6,9]; 
a3=[2;7]; 

全てが生じるはずであること:

[4,1,6,2] 
[4,1,6,7] 
[4,1,9,2] 
[4,1,9,7] 
[4,6,9,2] 
[4,6,9,7] 

私は私の質問はこの1つに似ていると思う:Generate all possible combinations of the elements of some vectors (Cartesian product)が、私は本当に私の問題への回答を適合させることはできませんよ。

編集: もう一度回答と修正をありがとう!ビーカーはすでにオクターブの魅力のような作品を言ったように。今では、セル配列(または潜在的な解決策にうまく適合する他の構造)に組み合わされた任意の数のaに対してもう少し柔軟性を持たせたいと思います。私は文字列を構成して、それからevalを入力して回避策を作った。しかし、それは私にはかなり優雅に見えません。もっとそれを持つことは可能ですか?アルゴリズム...?

+0

最後の2つの出力で「6,9」を意味しますか? –

+0

@ LuisMendo「はい」と言っても大丈夫です... –

答えて

2

同じコードがOctaveでも動作することを願ってMATLABを使用して回答しています。

になり
a1=4; 
a2=[1,6;1,9;6,9]; 
a3=[2;7]; 

nRows = [size(a1,1), size(a2,1), size(a3,1)]; 

[x,y,z] = ndgrid(1:nRows(1),1:(nRows(2)),1:(nRows(3))); 
cartProd = [a1(x(:),:) a2(y(:),:) a3(z(:),:)]; 

:ここ


は、あなたがリンクされ、問題のAmro's answerに基づくソリューションです

cartProd = 

    4  1  6  2 
    4  1  9  2 
    4  6  9  2 
    4  1  6  7 
    4  1  9  7 
    4  6  9  7 

それはあなたが示したものとは少し異なるためだが、私は思いますそれはあなたにとってまだ役に立つかもしれません。

+2

Octaveでうまく動作します。 :) – beaker

関連する問題