И другие программы этой серии
Опера
ции над разреженными матрицами возвращают разреженные матрицы, а опера
ции над полными матрицами возвращают полные матрицы. В большинстве
случаев операции над смешанными матрицами возвращают полные матрицы. Ис
ключение составляют случаи, когда результат смешанной операции явно сохра
няет разреженный тип. Так бывает при поэлементном умножении массивов A.*S,
где S – разреженный массив. Пример:
>> 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).
Продолжение в части 2