#matlab
#matlab
Вопрос:
У меня есть матрица весов смежности графа. Я хочу вызвать алгоритм Беллмана Форда из библиотеки matlabbgl. Как я могу преобразовать матрицу в разреженный формат?
Комментарии:
1. может быть, вызвать для этого sparse ?
2. вы должны принять ответы на свои вопросы, если вы сочли их полезными (смотрите, там есть галочка), а также использовать положительные отзывы. Это поможет вам получить больше ответов.
Ответ №1:
Преобразование полных матриц в разреженные
Вы можете преобразовать полную матрицу в разреженное хранилище, используя функцию sparse с одним аргументом.
S = sparse(A)
Например
A = [ 0 0 0 5
0 2 0 0
1 3 0 0
0 0 4 0];
S = sparse(A)
производит
S =
(3,1) 1
(2,2) 2
(3,2) 3
(4,3) 4
(1,4) 5
В распечатанном выводе перечислены ненулевые элементы S вместе с их индексами строк и столбцов. Элементы отсортированы по столбцам, отражающим внутреннюю структуру данных.
Вы можете преобразовать разреженную матрицу в полное хранилище, используя функцию full, при условии, что порядок матриц не слишком велик. Например, A = full (S) отменяет преобразование примера.
Преобразование полной матрицы в разреженное хранилище — не самый частый способ генерации разреженных матриц. Если порядок матрицы достаточно мал, чтобы обеспечить возможность полного хранения, то преобразование в разреженное хранилище редко обеспечивает значительную экономию.