تقاطع مع عمودين في كل مصفوفة

0

أود أن أجد تقاطع عمودين في مصفوفة (انظر المثال أدناه). لذلك للعثور على الموضع الذي يتقاطع فيه A و B - في هذه الحالة في الموضع 3 و 5.

الحل الذي أملكه حتى الآن ، هو دمج العمودين مع عمود واحد واستخدامهما intersect تعمل على عمود واحد بعد ذلك بسلسلة. هل يوجد حل أكثر أناقة؟

A = [1،1؛ 1،3؛ 1،4؛ 2،1؛ 2،5؛ 3،1]

أ =

 1     1
 1     3
 1     4
 2     1
 2     5
 3     1

ب = [2،5؛ 1،4]

ب =

 2     5
 1     4

1 إجابة

2
افضل جواب

يمكنك تجنب دمج الأعمدة. عند استخدام تقاطع يمكنك استخدام rows اختيار.

A = [1,1;1,3;1,4;2,1;2,5;3,1]
B = [2,5;1,4]
[C,ia,ib] = intersect(B,A,'rows');

>>ib
     3
     5

بالإضافة إلى ذلك ، إذا كنت لا تريد طلب نتيجة التقاطع ، يمكنك استخدام stable اختيار.

 [C,ia,ib] = intersect(B,A,'rows','stable');
 >>ib
     5
     3
:مؤلف
فوق
قائمة طعام