Вы можете использовать матрицу sparse
. Пусть rows
будет первым столбцом, cols
— вторым, а s
— весом.
A = sparse([rows; cols],[cols; rows],[s; s]);
Если вы хотите увидеть матрицу. используйте full()
.
ОБНОВЛЕНИЕ:
Я сделал ответ немного проще (все в одну строку, вместо добавления транспонированного и включил пояснения, как и просили:
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
содержат необходимую информацию. Разреженные матрицы нуждаются в трех векторах. Каждая строка двух первых векторов, 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
person
Stewie Griffin
schedule
10.10.2013