# How to generate a sparse matrix for a given array?

2 visualizzazioni (ultimi 30 giorni)
Benson Gou il 24 Mag 2021
Commentato: Benson Gou il 25 Mag 2021
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:
1. Sum of each row is zero.
2. 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 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Matt J il 25 Mag 2021
Modificato: Matt J il 25 Mag 2021
B=laplacian( graph(A(:,1),A(:,2)) );
##### 5 CommentiMostra 3 commenti meno recentiNascondi 3 commenti meno recenti
Benson Gou il 25 Mag 2021
yes, it works well. Thanks a lot.
Benson
Matt J il 25 Mag 2021

Accedi per commentare.

### Più risposte (1)

the cyclist il 24 Mag 2021
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)
(1,1) 2 (3,1) -1 (4,1) -1 (2,2) 2 (3,2) -1 (5,2) -1 (1,3) -1 (2,3) -1 (3,3) 3 (5,3) -1 (1,4) -1 (4,4) 2 (5,4) -1 (2,5) -1 (3,5) -1 (4,5) -1 (5,5) 3
##### 7 CommentiMostra 5 commenti meno recentiNascondi 5 commenti meno recenti
the cyclist il 25 Mag 2021
I assume that doing what @Matt J suggested in his answer:
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.
Benson Gou il 25 Mag 2021
Hi, the Cyclist,
Thanks a lot for your great help. You have a good day!
Benson

Accedi per commentare.

### Categorie

Scopri di più su Audio and Video Data in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by