Class ProjectionMatrix

Class Documentation

class ProjectionMatrix

A projection matrix — it allows multiplication of real vectors by a specified matrix. The matrix can also be randomly generated.

Public Types

using Matrix = Eigen::MatrixXd

Datatype for projection matrices.

Public Functions

void computeRandom(unsigned int from, unsigned int to, const std::vector<double> &scale)

Wrapper for ComputeRandom(from, to, scale)

void computeRandom(unsigned int from, unsigned int to)

Wrapper for ComputeRandom(from, to)

void project(const double *from, Eigen::Ref<Eigen::VectorXd> to) const

Multiply the vector from by the contained projection matrix to obtain the vector to.

void print(std::ostream &out = std::cout) const

Print the contained projection matrix to a stram.

Public Members

Matrix mat

Projection matrix.

Public Static Functions

static Matrix ComputeRandom(unsigned int from, unsigned int to, const std::vector<double> &scale)

Compute a random projection matrix with from columns and to rows. A vector with from elements can be multiplied by this matrix in order to produce a vector with to elements.

If the scale argument is specified, the columns of the matrix are divided by the corresponding scaling argument: all elements (rows) in column[i] are divided by scale[i]. This is useful to specify if scaling of the elements of the state is to be applied before projection. If the scale for a column is 0, the column itself is set to 0.

Each element is sampled with a Gaussian distribution with mean 0 and variance 1 and the matrix rows are made orthonormal.

static Matrix ComputeRandom(unsigned int from, unsigned int to)

Compute a random projection matrix with from columns and to rows. A vector with from elements can be multiplied by this matrix in order to produce a vector with to elements. This uses the function above called with an empty scale vector.

Each element is sampled with a Gaussian distribution with mean 0 and variance 1 and the matrix rows are made orthonormal.