exponenta event banner

spalloc

Выделение места для разреженной матрицы

Синтаксис

Описание

пример

S = spalloc(m,n,nz) создает разреженную матрицу с нулем S размера mоколо-n с помещением для удержания nz ненулевые элементы, где nz >= 1.

Примеры

свернуть все

Использовать spalloc для инициализации разреженной матрицы 10 на 10 всех нулей с пространством до 20 ненулевых элементов.

S = spalloc(10,10,20);

Определите несколько элементов в матрице.

S(1:3,1:3) = magic(3)
S = 
   (1,1)        8
   (2,1)        3
   (3,1)        4
   (1,2)        1
   (2,2)        5
   (3,2)        9
   (1,3)        6
   (2,3)        7
   (3,3)        2

Отображение числа ненулевых элементов в матрице.

n1 = nnz(S)
n1 = 9

Показать объем памяти, выделенный для ненулевых матричных элементов.

n2 = nzmax(S)
n2 = 20

Использовать spalloc для инициализации разреженной матрицы 20 на 20 всех нулей с пространством для 100 ненулевых элементов.

n = 20;
S = spalloc(n,n,5*n);

Затем используйте for цикл для заполнения столбцов S по одному со средним значением не более пяти ненулевых элементов на столбец.

for j = 1:n
    S(:,j) = [zeros(n-5,1); round(rand(5,1))];
end

Постройте график разреженности матрицы S. Точки представляют ненулевые элементы.

spy(S)

Figure contains an axes. The axes contains an object of type line.

Отображение числа ненулевых элементов в матрице.

n1 = nnz(S)
n1 = 54

Показать объем памяти, выделенный для ненулевых матричных элементов.

n2 = nzmax(S)
n2 = 100

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

свернуть все

Число строк матрицы, указанное как неотрицательное целое число.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Число столбцов матрицы, указанное как неотрицательное целое число.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Выделение памяти для ненулевых элементов, указанное как неотрицательное целое число. Если указано значение 0 для nz, то spalloc вместо этого устанавливает значение nz на 1.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Ограничения

  • Оба размера матрицы, m и n, должно быть меньше, чем 2^31-1 на 32-разрядных платформах или 2^48-1 на 64-разрядных платформах.

Совет

  • При многократном назначении в матрицу, созданную с помощью spalloc, предварительно выделенная память может предотвратить повторное перераспределение. Однако назначение в разреженную матрицу все еще является относительно дорогостоящей операцией, которую обычно следует избегать, если ее можно легко заменить одним из следующих:

    • одноразовый вызов sparse функция

    • одноразовый вызов spdiags функция

    • разовая конкатенация набора матриц, которые могут быть разреженными, плотными или обоими

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

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

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