exponenta event banner

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

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

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

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

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

  • Сокращение времени вычислений за счет исключения операций с нулевыми элементами.

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

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  

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

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

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

Связанные темы