Find if two sparse matrix have 1 in same position
4 views (last 30 days)
Show older comments
Hi everybody, I'm new here and new in use of matlab. I have two sparse matrix of different sizes and i want to know if both have 1 in position (x,y). There is a way to compare without make a comparison for each elements? (the matrix is a 10^7*10^7).
0 Comments
Accepted Answer
Cedric
on 1 Nov 2017
Edited: Cedric
on 1 Nov 2017
Do you need something along this line?
% - Build small test case.
A = sprand( 4, 5, 0.5 ) > 0 ; % 4x5 sparse.
B = sprand( 4, 4, 0.5 ) > 0 ; % 4x4 sparse.
% - Find intersect of matching locations of non-zero elements.
[A_r, A_c] = find( A ) ;
[B_r, B_c] = find( B ) ;
matching_rc = intersect( [A_r,A_c], [B_r,B_c], 'rows' )
Which outputs e.g.:
>> A
A =
4×5 sparse logical array
(4,1) 1
(1,2) 1
(1,3) 1
(2,3) 1
(4,4) 1
(1,5) 1
(2,5) 1
>> B
B =
4×4 sparse logical array
(2,1) 1
(4,1) 1
(2,2) 1
(4,2) 1
(1,4) 1
(2,4) 1
(4,4) 1
>> matching_rc
matching_rc =
4 1
4 4
More Answers (1)
Cam Salzberger
on 1 Nov 2017
Hello Lorenzo,
Sparse matrices in MATLAB are nice because you can often treat them as regular matrices. Specifically, indexing still works just fine:
rng default % For repeatability
A = sparse(randi(2,10)-1);
B = sparse(randi(2,10)-1);
A(3, 8) == 1 && B(3, 8) == 1
A(3, 9) == 1 && B(3, 7) == 1
Hope this helps!
-Cam
See Also
Categories
Find more on Sparse Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!