Преобразование из полных матриц в разреженные

#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) отменяет преобразование примера.
Преобразование полной матрицы в разреженное хранилище — не самый частый способ генерации разреженных матриц. Если порядок матрицы достаточно мал, чтобы обеспечить возможность полного хранения, то преобразование в разреженное хранилище редко обеспечивает значительную экономию.