You can use sparse
matrix. Let rows
be the first column, cols
the second, and s
the weight.
A = sparse([rows; cols],[cols; rows],[s; s]);
If you want to see the matrix. use full()
.
UPDATE:
I made the answer a bit simpler (everything in one line, instead of adding the transposed, and included explanations, as requested:
list = [1 2 3
1 3 4
1 4 5
2 3 4
2 5 8
2 4 7];
rows = list(:,1)
cols = list(:,2)
s = list(:,3)
Now, rows
, cols
and s
contains the needed information. Sparse matrices need three vectors. Each row of the two first vectors, rows
and cols
is the index of the value given in the same row of s
(which is the weight).
The sparse command assigns the value s(k)
to the matrix element adj_mat(rows(k),cols(k))
.
Since an adjacency matrix is symmetric, A(row,col) = A(col,row)
. Instead of doing [rows; cols]
, it is possible to first create the upper triangular matrix, and then add the transposed matrix to complete the symmetric matrix.
A = sparse([rows; cols],[cols; rows],[s; s]);
full(A)
A =
0 3 4 5 0
3 0 4 7 8
4 4 0 0 0
5 7 0 0 0
0 8 0 0 0