「nchoosek」​関数で、配列番号を取​得する方法

16 visualizaciones (últimos 30 días)
s
s el 17 de Jul. de 2023
Comentada: s el 17 de Jul. de 2023
matlabでは組み合わせとして、「nchoosek」関数があります。
以下のような場合、解決する方法があれば、教えていただけると幸いです。
例えば、以下のような同じ配列数の変数「A」と「B」があるとします。
A = [3 4 5 6]
B = [13 14 15 16]
この変数は同じ配列数でそれぞれの同じ配列番号の値が対応しています。
つまり、A(1)とB(1)、A(2)とB(2)、…、A(4)とB(4)はセットで今後扱いたいです。
しかし、「nchoosek」関数は返り値に、インデックス(配列番号)を返せないため、変数Aの組み合わせの結果に対応した変数Bの結果を取得できません。
Acon = nchoosek(A,2) % 変数「A」の中から2つ選ぶ場合の組み合わせ
この変数Aconに(3,5)という組み合わせの結果がきた時、同じ配列番号の変数Bも取得したいです。
つまり、(13,15)も欲しいということです。
何かいい方法がありましたら、教えていただけますと助かります。
よろしくお願い申し上げます。

Respuesta aceptada

交感神経優位なあかべぇ
交感神経優位なあかべぇ el 17 de Jul. de 2023
nchoosekの引数1にインデックスを渡せばよいのではと思います。
A = [3 4 5 6];
B = [13 14 15 16];
idx = 1 : length(A);% インデックスの作成
sek_idx = nchoosek(idx,2);% インデックスから2つ選択
sek_A = A(sek_idx)% Aへ選択インデックスの当てはめ
sek_A = 6×2
3 4 3 5 3 6 4 5 4 6 5 6
sek_B = B(sek_idx)% Bへ選択インデックスの当てはめ
sek_B = 6×2
13 14 13 15 13 16 14 15 14 16 15 16
sek_A_3_5_idx = all(sek_A == [3,5], 2); % 3,5と一致する行を検索
sek_B(sek_A_3_5_idx, :)% Aの3,5と同じ行のBを表示
ans = 1×2
13 15
  1 comentario
s
s el 17 de Jul. de 2023
ありがとうございます。
引数にインデックスを渡すことで解決できました。
感謝申し上げます。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!