MatCreateCentering#
Creates a new matrix object that implements the (symmetric and idempotent) centering matrix, \( I - (1/N) * 1^T * 1\)
Synopsis#
#include "petscmat.h"
PetscErrorCode MatCreateCentering(MPI_Comm comm, PetscInt n, PetscInt N, Mat *C)
Collective
Input Parameters#
comm - MPI communicator
n - number of local rows (or
PETSC_DECIDE
to have calculated ifN
is given) This value should be the same as the local size used in creating they
vector for the matrix-vector product \(y = Ax\).N - number of global rows (or
PETSC_DETERMINE
to have calculated ifn
is given)
Output Parameter#
C - the matrix
Notes#
The entries of the matrix C
are not explicitly stored. Instead, the new matrix
object is a shell that simply performs the action of the centering matrix, i.e.,
multiplying \( C*x\) subtracts the mean of the vector x
from each of its elements.
This is useful for preserving sparsity when mean-centering the columns of a
matrix is required. For instance, to perform principal components analysis with
a matrix A
, the composite matrix \(C*A\) can be passed to a partial SVD solver.
See Also#
Level#
intermediate
Location#
src/mat/impls/centering/centering.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages