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

4 次查看(过去 30 天)
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

采纳的回答

Stephan
Stephan 2019-2-23
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
  2 个评论
Benson Gou
Benson Gou 2019-2-24
Hi, Stephan,
Thanks for your response. It is very good. How about the following example?
A=[0 1 0 2;3 0 0 4;0 5 6 0];B=[0 2.43 0 1.09;4.97 7.30 0 3.3;8.03 5.43 9.12 0];
The locations of nonzero entries in A and B are the same (but their values are different) except (2,2) and (3,1), their values are 7.30 and 8.03.
Our real case is like this. Thanks a lot for your great help.
Benson

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Sparse Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by