Packed storage matrix
From HandWiki
A packed storage matrix, also known as packed matrix, is a term used in programming for representing an [math]\displaystyle{ m\times n }[/math] matrix. It is a more compact way than an m-by-n rectangular array by exploiting a special structure of the matrix.
Typical examples of matrices that can take advantage of packed storage include:
- symmetric or hermitian matrix
- Triangular matrix
- Banded matrix.
Code examples (Fortran)
Both of the following storage schemes are used extensively in BLAS and LAPACK.
An example of packed storage for hermitian matrix:
complex:: A(n,n) ! a hermitian matrix complex:: 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 A do 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
An example of packed storage for banded matrix:
real:: A(m,n) ! a banded matrix with kl subdiagonals and ku superdiagonals real:: 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 A do j=1,n forall(i=max(1,j-kl):min(m,j+ku)) A(i,j) = AP(i-j,j) end do print *,AP(0,:) ! the diagonal
This article does not cite any external source. HandWiki requires at least one external source. See citing external sources. (2021) (Learn how and when to remove this template message) |
![]() | Original source: https://en.wikipedia.org/wiki/Packed storage matrix.
Read more |