How to find shared elements in a matrix
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Saleh Almasabi
am 12 Mär. 2017
Beantwortet: Roger Stafford
am 13 Mär. 2017
Hi,
I have a zeros and ones vector called P. And a zeros and ones matrix called A, the matrix has a size nXn. The ones index in vector P, represents the raw in matrix A. For example if P=[0 1 0 1 0 0], then the corresponding rows in A are rows 2,4.
- (shared directly) I would like to find if A(2,4) or A(4,2) are both ones. The output is 4,2
- (shared indirectly) Now I want to find which elements i A(2,:) and A(4,:) are shared e.g have the same value. for example A(2,3) and A(4,3) both have ones, then I would get 3. The output is [2,3],[4,3]
I only care about the ones in both the vector P and matrix A. I have no interest in zero elements.
2 Kommentare
Geoff Hayes
am 12 Mär. 2017
Saleh - will your P array only ever have two ones (so you will only be ever comparing two rows)? Or can P have more than two ones in which case you would be comparing every possible row pair?
Akzeptierte Antwort
Roger Stafford
am 13 Mär. 2017
D = nchoosek(find(P==1),2);
D = D(A(D(:,1)+n*(D(:,2)-1))==1 & A(D(:,2)+n*(D(:,1)-1))==1,:);
The two elements in each row of D are the possible indices such as 2,4 you mentioned in the “shared directly” part.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!