Разреженные матрицы в MATLAB

Опубликовано: 19 Февраля, 2023

Матрицы — это двумерные массивы, которые являются наиболее популярным типом данных в 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, а затем преобразует ее обратно в полную матрицу.