How to generate a sparse matrix for a given array?
8 ビュー (過去 30 日間)
古いコメントを表示
Dear All,
I want to generate a sparse matrix B for a given array A. A contains two columns of indecis. For example,
A = [1 3;
1 4;
2 3;
2 5;
3 5;
4 5]
The sparse matrix B should be as follows:
B = [ 2 0 -1 -1 0;
0 2 -1 0 -1;
-1 -1 2 0 0;
-1 0 0 2 -1;
0 -1 -1 -1 3]
The characteristics of B:
- Sum of each row is zero.
- If we consider matrix A gives the information of edges of a graph, B(i,i) = sum of number of edges, B(i,j) = -1 if there is an edge between i and j.
Thanks a lot.
Benson
0 件のコメント
採用された回答
その他の回答 (1 件)
the cyclist
2021 年 5 月 24 日
Here is one way:
A = [1 3;
1 4;
2 3;
2 5;
3 5;
4 5];
d = max(A(:));
B = sparse(A(:,1),A(:,2),-1,d,d) + sparse(A(:,2),A(:,1),-1,d,d);
for ii = 1:d
B(ii,ii) = -sum(B(ii,:));
end
disp(B)
7 件のコメント
the cyclist
2021 年 5 月 25 日
A=unique(sort(A,2),'rows')
is what you would need to do here as well.
If you posted a small example that exhibits the problem, it would help. But I'm guessing you have your answer.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!