MATLAB: How to find out the location difference of nonzero entries in two sparse matrices

nonzero entriessparse matrix

Hello, All,
I have two sparse matries which have the same size. I know every nonzero entry in A must correspond to a nonzero entry in B, but some of nonzero entries in B which correspond to zero entries in A. For example, A=[0 1 0 2;3 0 0 4;0 5 6 0]; B=[0 1 0 2;3 7 0 4;8 5 6 0]. I want to find out the location of nonzero entries in B which correspind to zero entries in A. The answer to this example is: (2, 2) and (3, 1). Their correspinding entries are 7 and 8 in B.
Thanks.
Benson

Best Answer

Hi,
this are not sparse matrices. However you find the locations given as row and column values and the corresponding values with:
A=[0 1 0 2;3 0 0 4;0 5 6 0];
B=[0 1 0 2;3 7 0 4;8 5 6 0];
[row, col] = find(A~=B)
vals = B(A~=B)
results in:
row =
3
2
col =
1
2
vals =
8
7
which is exactly the desired result.
Best regards
Stephan