2016-09-09 8 views
1

現在、アルファ、ベータ、ガンマ、デルタのカテゴリ(1 1 1 1、1 1 1 2など)からすべての組み合わせを生成できます。Matlabの組み合わせをフィルタリングする

現在のコード:

alpha = [1, 2, 3]; 
beta = [1, 2, 3, 4, 5]; 
gamma = [1, 2, 3, 4, 5]; 
delta = [1, 2, 3]; 
[a, b, c, d] = ndgrid (alpha, beta, gamma, delta); 
combination = [a(:), b(:), c(:), d(:)]; 

私はそれらの組み合わせの一部をフィルタリングしたいつまり、アルファが1で、ガンマが、私はこれに近づくだろうか4など

ある組み合わせのいずれかを取り除きます?あなたが探しているもの

+1

コードを画像ではなくテキストとして送信できますか?私たちはコードを実行するために画像からカットアンドペーストすることはできません。 – beaker

答えて

2

あなたは、その情報から新しい配列を作成したい場合はlogical indexing

c1 = (combination(:,1) ~= 1); %rows where alpha is not 1 
c2 = (combination(:,3) ~= 4); %rows where gamma is not 4 

desired = combination(c1&c2,:); %output rows where both c1 and c2 are true 
+0

ちょうどガンマ –

+0

の代わりにデルタを取り除いたことを指摘していれば、それらの行を選択したくない場合は、それらの* rid *を取得したいので、論理配列または論理テストを取り消す必要があります。 –

+0

(私はあなたのためにそれを修正する自由を取った、私はそれが大丈夫だと思う) –

1

イアン・ライリーの答えが正しいアプローチを提供しています。答えを追加するだけで、同じ方法を使用して、不要な行を空にすることによって直接削除することもできます。

>> combination(combination(:,1) == 1,:) = []; 
>> combination(combination(:,3) == 4,:) = []; 
関連する問題