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