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

조회 수: 15 (최근 30일)
s
s 2023년 7월 17일
댓글: s 2023년 7월 17일
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)も欲しいということです。
何かいい方法がありましたら、教えていただけますと助かります。
よろしくお願い申し上げます。

채택된 답변

交感神経優位なあかべぇ
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
s
s 2023년 7월 17일
ありがとうございます。
引数にインデックスを渡すことで解決できました。
感謝申し上げます。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!