И другие программы этой серии
Пример:
>> i=[2,4,3];j=[1,3,8];s=[4,5+5i,9];t = sparse(i,j,s,5,8)
t=
(2,1)
4.0000
(4,3)
5.0000+ 5.0000i
(3,8)
9.0000
0.0129
0.3840
0.6831
0.0928
0.3840
0.6831
0
0
0
0.0928
0
0
0
• S=sparse(A) преобразует полную матрицу в разреженную, удаляя нуле
вые элементы. Если матрица S уже разреженная, то sparse(S) возвращает
S. Функция sparse – это встроенная функция, которая формирует матри
Функция spconvert используется для создания разреженных матриц из про
стых разреженных форматов, легко производимых вне средств MATLAB:
• S = spconvert(D) преобразует матрицу D со строками, содержащими
[i,j,r] или [i,j,r,s], где i – индекс ряда, j – индекс строки, r – чис
ленное значение, в соответствующую разреженную матрицу. Матрица D
может иметь nnz или nnz+1 строк и три или четыре столбца. Три элемента
в строке генерируют действительную матрицу, четыре элемента в строке
генерируют комплексную матрицу (s преобразуется в мнимую часть значе
ния элемента). Последняя строка массива D типа [m n 0] или [m n 0 0]
может быть использована для определения size(S). Команда spconvert
может быть использована только после того, как матрица D загружена, или
из MAT файла, или из ASCII файла при помощи команды load.
load mydata.dat
A = spconvert(mydata);
240
Типы данных – массивы специального вида
Разреженные матрицы
241
5.1.4. Работа с ненулевыми элементами
разреженных матриц
Поскольку разреженные матрицы содержат ненулевые элементы, то предусмот
рен ряд функций для работы с ними:
• nnz(X) возвращает число ненулевых элементов матрицы X. Плотность раз
реженной матрицы определяется по формуле nnz(X)/numel(X). Пример:
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, выбирая их последовательно по столбцам.