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

3 次查看(过去 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 中查找有关 Resizing and Reshaping Matrices 的更多信息

标签

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!