matlab - tutorial - मैटलैब




मैट्रिक्स में मेल खाने वाली पंक्तियाँ ढूंढना (3)

मान लीजिए मेरे पास एक (एमएक्सएन) मैट्रिक्स क्यू है, और एक पंक्ति सदिश आर, जैसे

Q = [ 1 2 3 ; 4 2 3 ; 5 6 7 ; 1 2 3 ; 1 2 3 ; 1 2 5 ];

r = [ 1 2 3 ];

तार्किक वेक्टर (लंबाई मी की) प्राप्त करने का सबसे आसान तरीका क्या यह दर्शाता है कि क्यू में कौन सी पंक्तियों को निर्दिष्ट पंक्ति आर में समान (सभी तत्वों के लिए) है?

ऊपर दिए गए नमूने के मामले में, यह होना चाहिए

[ 1 0 0 1 1 0 ];

आप ismember उपयोग कर सकते हैं और इसे एक पंक्ति में कर सकते हैं:

>> ismember(Q,r,'rows')'

ans =

     1     0     0     1     1     0

repmat साथ आसान तरीका:

a = [1 2 3; 4 5 6; 7 8 9];
t = [4 5 6];
[x,y] = size(a);
r = all(a==repmat(t,y,1), 2)'

all(bsxfun(@eq, r, Q),2)'

bsxfun(@eq, r, Q) प्रत्येक पंक्ति की तुलना करती है और एक मैट्रिक्स को उसी आकार के साथ क्यू देता है:

>> bsxfun(@eq, r, Q)

ans =

   1     1     1
   0     1     1
   0     0     0
   1     1     1
   1     1     1
   1     1     0

all फ़ंक्शन गणना करता है यदि बीएसएक्सफ़न का परिणाम हर पंक्ति के साथ अलग-अलग है इस प्रकार यह देता है:

>> all(ans,2)'

ans =

   1     0     0     1     1     0

और हाँ, आपके वांछित पंक्ति आउटपुट को मैच करने के लिए एक ट्रांज़ेक्शन ऑपरेटर भी है





matlab