Interpolative Decomposition (ID)¶
Interpolative Decompositions (ID’s) are closely related to pivoted QR factorizations and are useful for representing (approximately) low-rank matrices in terms of linear combinations of a few of their columns, i.e.,
\[A P = \hat{A} \begin{pmatrix} I & Z \end{pmatrix},\]
where \(P\) is a permutation matrix, \(\hat{A}\) is a small set of columns of \(A\), and \(Z\) is an interpolation matrix responsible for representing the remaining columns in terms of the selected columns of \(A\).
The following routines use column-pivoted QR factorizations to return an Interpolative Decomposition.
C++ API¶
-
void
ID
(const Matrix<F> &A, Matrix<int> &p, Matrix<F> &Z, const QRCtrl<Base<F>> ctrl = QRCtrl<Base<F>>())¶
-
void
ID
(const AbstractDistMatrix<F> &A, AbstractDistMatrix<int> &p, AbstractDistMatrix<F> &Z, const QRCtrl<Base<F>> ctrl = QRCtrl<Base<F>>())¶ The matrix \(A\) is not modified.
-
void
ID
(Matrix<F> &A, Matrix<int> &p, Matrix<F> &Z, const QRCtrl<Base<F>> ctrl = QRCtrl<Base<F>>(), bool canOverwrite = false)¶
-
void
ID
(AbstractDistMatrix<F> &A, AbstractDistMatrix<int> &p, AbstractDistMatrix<F> &Z, const QRCtrl<Base<F>> ctrl = QRCtrl<Base<F>>(), bool canOverwrite = false)¶ The matrix \(A\) is optionally allowed to be modified.
C API¶
-
ElError
ElIDDist_s
(ElDistMatrix_s A, ElDistMatrix_i p, ElDistMatrix_s Z, ElQRCtrl_s ctrl, bool canOverwrite)¶
-
ElError
ElIDDist_d
(ElDistMatrix_d A, ElDistMatrix_i p, ElDistMatrix_d Z, ElQRCtrl_d ctrl, bool canOverwrite)¶