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 object. The axes object 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