sparse
マトリックスを使用できます。最初rows
の列、cols
2 番目の列、およびs
重みになります。
A = sparse([rows; cols],[cols; rows],[s; s]);
マトリックスを見たい場合。使用してfull()
ください。
アップデート:
私は答えを少し簡単にしました(要求に応じて、転置された説明を追加する代わりに、すべてを1行にまとめました:
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)
現在、rows
にcols
はs
必要な情報が含まれています。スパース行列には 3 つのベクトルが必要です。最初の 2 つのベクトルのrows
各行cols
は、 の同じ行で指定された値のインデックスですs
(これは重みです)。
sparse コマンドは、値s(k)
を行列要素に割り当てますadj_mat(rows(k),cols(k))
。
隣接行列は対称であるため、A(row,col) = A(col,row)
. を行う代わりに、[rows; cols]
最初に上三角行列を作成し、次に転置行列を追加して対称行列を完成させることができます。
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