Разреженные матрицы в MATLAB
Матрицы — это двумерные массивы, которые являются наиболее популярным типом данных в MATLAB. Матрица может содержать теоретически бесконечные элементы, если у компьютера есть необходимая память. На практике при работе с большими данными бывают ситуации, когда большинство данных содержит в качестве элементов нули, что приводит к непроизводительному расходованию памяти.
В качестве разрешения создаются разреженные матрицы. Разреженная матрица — это представление матрицы, в которой все нулевые элементы удалены, а ненулевые элементы сохранены в виде строки, столбца и тройки значений.
В этой статье мы увидим, как создать разреженную матрицу, преобразовать существующую матрицу в разреженную матрицу и т. д.
Синтаксис разреженной функции:
Syntax:
s = sparse(matrix)
Вышеупомянутый метод преобразует существующую матрицу в разреженную матрицу. См. следующий пример.
Пример 1:
Matlab
% MATLAB code for 7 by 7 identity matrix identity = eye(7) % Converting identity into a sparse matrix s = sparse(identity) |
Выход:
Создание пустой разреженной матрицы:
MATLAB предоставляет возможность создать разреженную матрицу всех нулей определенного размера. То же самое можно сделать, используя только команду sparse, на этот раз передав два аргумента, один для размера строки, а другой для размера столбца. См. приведенный ниже пример.
Пример 2:
Matlab
% MATLAB code for 3 by 5 identity matrix sps = sparse(3,5); disp(sps) |
Выход:
Этот код создает разреженную матрицу всех нулей размером 3×5.
Создание разреженной матрицы определенного размера:
Разреженная функция также преобразует значения для строк, столбцов и значений в разреженную матрицу заранее определенной длины. Как видно из приведенного ниже кода, три ненулевых элемента добавляются к разреженной матрице размером 23 на 23.
Пример 3:
Matlab
% MATLAB code for 3 by 5 identity matrix row = [1 13 23]; column = [5 7 17]; values = [23 31 999]; size = 23; sps = sparse(row,column,values,size,size); disp(sps) |
Выход:
Преобразуйте разреженную матрицу в полную матрицу:
Функция full () берет входные данные из разреженной матрицы и преобразует их обратно в обычную полноразмерную матрицу.
Пример 4:
Matlab
% MATLAB code for 3 by 5 identity matrix row = [1 3 5]; column = [5 6 7]; values = [23 31 999]; size = 7; sps = sparse(row,column,values,size,size); disp(sps) % Converting to full matrix matrix = full(sps); fprintf( "Full matrix:
" ) disp(matrix) |
Выход:
Приведенный выше код сначала генерирует разреженную матрицу размером 7×7, а затем преобразует ее обратно в полную матрицу.