# Find if two sparse matrix have 1 in same position

4 views (last 30 days)
Lorenzo Lasagni on 1 Nov 2017
Commented: Cedric Wannaz on 1 Nov 2017
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).

Cedric Wannaz on 1 Nov 2017
Edited: Cedric Wannaz 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
##### 2 CommentsShowHide 1 older comment
Cedric Wannaz on 1 Nov 2017
My pleasure!

### 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
##### 1 CommentShowHide None
Lorenzo Lasagni on 1 Nov 2017
The answer below is what i was looking for, thank you anyway!