spalloc

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

Синтаксис

Описание

пример

S = spalloc(m,n,nz) создает полностью нулевую разреженную матрицу S размера m-by- 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++ с помощью Coder™ MATLAB ®

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