Упакованная матрица хранения
Упакованная матрица хранения , также известная как упакованная матрица , — это термин, используемый в программировании для представления матрица . Это более компактный способ, чем прямоугольный массив mxn, за счет использования специальной структуры матрицы.
Типичные примеры матриц, которые могут использовать преимущества упакованного хранилища, включают:
Примеры кода (Фортран)
[ редактировать ]Обе следующие схемы хранения широко используются в BLAS и LAPACK.
Пример упакованного хранилища для эрмитовой матрицы:
complex :: A(n,n) ! a hermitian matrixcomplex :: AP(n*(n+1)/2) ! packed storage for A! the lower triangle of A is stored column-by-column in AP.! unpacking the matrix AP to Ado j=1,n k = j*(j-1)/2 A(1:j,j) = AP(1+k:j+k) A(j,1:j-1) = conjg(AP(1+k:j-1+k))end do
Пример упакованного хранилища для полосовой матрицы:
real :: A(m,n) ! a banded matrix with kl subdiagonals and ku superdiagonalsreal :: AP(-kl:ku,n) ! packed storage for A! the band of A is stored column-by-column in AP. Some elements of AP are unused.! unpacking the matrix AP to Ado j = 1, n forall(i=max(1,j-kl):min(m,j+ku)) A(i,j) = AP(i-j,j)end doprint *,AP(0,:) ! the diagonal