Вычислительные преимущества разреженных матриц

Управление памятью

Использование разреженных матриц для хранения данных, которые содержат большое количество нулевых элементов, может как сохранить значительный объем памяти, так и ускорить обработку этих данных. sparse - атрибут, который можно назначить любому двумерному MATLAB® матрица, которая состоит из double или logical элементы.

The sparse атрибут позволяет MATLAB:

  • Сохраните только ненулевые элементы матрицы вместе с их индексами.

  • Уменьшите время расчета, исключив операции с нулевыми элементами.

Для полных матриц MATLAB хранит каждый элемент матрицы внутри. Элементы с нулевым значением требуют такого же количества пространства хранения, как и любые другие элементы матрицы. Однако для разреженных матриц MATLAB хранит только ненулевые элементы и их индексы. Для больших матриц с высоким процентом нулевых элементов эта схема значительно уменьшает объем памяти, необходимый для хранения данных.

The whos команда предоставляет высокоуровневую информацию о матричном хранилище, включая размер и класс памяти. Для примера это whos В списке показана информация о разреженных и полных версиях одной и той же матрицы.

M_full = magic(1100);          % Create 1100-by-1100 matrix.
M_full(M_full > 50) = 0;       % Set elements >50 to zero.
M_sparse = sparse(M_full);     % Create sparse matrix of same.

whos
  Name             Size                Bytes  Class     Attributes

  M_full        1100x1100            9680000  double              
  M_sparse      1100x1100               9608  double    sparse  

Заметьте, что количество используемых байтов меньше в разреженном случае, потому что нулевые элементы не сохранены.

Вычислительная эффективность

Разреженные матрицы также имеют значительные преимущества с точки зрения вычислительной эффективности. В отличие от операций с полными матрицами, операции с разреженными матрицами не выполняют ненужную низкоуровневую арифметику, такую как нуль -adds (x+0 всегда x). Полученная эффективность может привести к резкому улучшению времени выполнения для программ, работающих с большими объемами разреженных данных.

Похожие темы