exponenta event banner

полный

Преобразование разреженной матрицы в полное хранилище

Синтаксис

Описание

пример

A = full(S) преобразует разреженную матрицу S к полной организации хранения, так что issparse(A) возвращает логический 0 (false).

Примеры

свернуть все

Измените формат хранения матрицы и сравните требования к хранению.

Создайте случайную разреженную матрицу. Отображение разреженных матриц в MATLAB ® пропускает все нули и показывает расположение и значение ненулевых элементов.

rng default %for reproducibility
S = sprand(8,8,0.3)
S = 
   (2,1)       0.0344
   (7,1)       0.4456
   (8,1)       0.7547
   (2,2)       0.4387
   (4,3)       0.7655
   (7,3)       0.6463
   (8,4)       0.2760
   (1,6)       0.9502
   (5,6)       0.1869
   (8,6)       0.6797
   (3,7)       0.3816
   (4,7)       0.7952
   (8,7)       0.6551
   (6,8)       0.4898
   (7,8)       0.7094

Преобразование матрицы в полное хранилище. Отображение матрицы MATLAB отражает новый формат хранения.

A = full(S)
A = 8×8

         0         0         0         0         0    0.9502         0         0
    0.0344    0.4387         0         0         0         0         0         0
         0         0         0         0         0         0    0.3816         0
         0         0    0.7655         0         0         0    0.7952         0
         0         0         0         0         0    0.1869         0         0
         0         0         0         0         0         0         0    0.4898
    0.4456         0    0.6463         0         0         0         0    0.7094
    0.7547         0         0    0.2760         0    0.6797    0.6551         0

Сравните требования к хранению данных двух форматов:

  • A использует хранилище для 64-х двойников (по 8 байт в каждом) или 64⋅8=512 байт.

  • S использует хранилище для 15 ненулевых элементов, а также 24 целых чисел, описывающих их положения, в общей сложности для 39⋅8=312 байт.

whos
  Name      Size            Bytes  Class     Attributes

  A         8x8               512  double              
  S         8x8               312  double    sparse    

Входные аргументы

свернуть все

Разреженная матрица для преобразования, заданная как матрица. Если S уже является полной матрицей, то A идентичен S.

Совет

  • Если X является mоколо-n матрица с nz ненулевые элементы, затем full(X) требуется место для хранения m*n элементы. С другой стороны, sparse(X) требуется место для хранения nz элементы и (nz+n+1) целые числа.

    Плотность матрицы (nnz(X)/numel(X)) определяет, является ли более эффективным сохранение матрицы как разреженной или полной. Точная точка кроссовера зависит от класса матрицы, а также платформы. Например, в 32-битном MATLAB ® двойная разреженная матрица с плотностью менее 2/3 требует меньше места, чем та же матрица в полной памяти. Однако в 64-битном MATLAB двойные матрицы, имеющие меньше половины ненулевых элементов, более эффективны для хранения в виде разреженных матриц.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен до R2006a