How to find shared elements in a matrix
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Saleh Almasabi
el 12 de Mzo. de 2017
Respondida: Roger Stafford
el 13 de Mzo. de 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 comentarios
Geoff Hayes
el 12 de Mzo. de 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?
Respuesta aceptada
Roger Stafford
el 13 de Mzo. de 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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!