И другие программы этой серии
Пример:
h = sparse(hilb(10));
>> nnz(h)
ans =
100
• f = spfun(@function,S) вычисляет function(S) для ненулевых эле
ментов матрицы S. Имя function – это имя m файла или встроенной
в ядро функции. function должна работать с матричным аргументом S и
вычислить функцию для каждого элемента матрицы S.
Пример:
>> S=spfun(@exp,sprand(4,5,0.4))
S=
(2,2)
1.6864
(2,3)
2.4112
(3,3)
2.6638
(2,4)
1.1888
(3,4)
1.3119
(4,4)
2.4007
(3,5)
1.2870
• nonzeros(A) возвращает полный вектор столбец ненулевых элементов
матрицы A, выбирая их последовательно по столбцам. Эта функция дает
только выход s, но не значения i и j из аналогичного выражения
[i,j,s]=find(A). Вообще, length(s)=nnz(A)?nzmax(A)?prod
(size(A)). Пример:
>> g=nonzeros(sparse(hankel([1,2,8])))
g=
1
2
8
2
8
8
• R = spones(S) генерирует матрицу R той же разреженности, что и S, но
заменяет на 1 все ненулевые элементы исходной матрицы. Пример:
>> S=sprand(3,2,0.3)
S=
(3,1)
(1,2)
>> spones(S)
ans =
(3,1)
(1,2)
0.2987
0.1991
1
1
• nzmax(S) возвращает количество ячеек памяти для ненулевых элементов.
Обычно функции nnz(S) и nzmax(S) дают один и тот же результат. Но
если S создавалась в результате операции над разреженными матрицами,
такой как умножение или LU разложение, может быть выделено больше
элементов памяти, чем требуется, и nzmax(S) отражает это. Если S – раз
реженная матрица, то nzmax(S) – максимальное количество ячеек для
хранения ненулевых элементов. Если S – полная матрица, то nzmax(S)=
=numel(S). Пример:
>> q=nzmax(sparse(hankel([1,7,23])))
q=6
Продолжение в части 2