---
name: "mlpack_math"
section: "3"
platform: "linux"
package: "mlpack-doc"
version: "1.0.10-1"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/mlpack_math"
---

# mlpack\_math(3)

Miscellaneous math routines.

## NAME

mlpack::math -

Miscellaneous math routines.

## SYNOPSIS

### Classes

class **Range**\
 *Simple real-valued range.*

### Functions

void **Center** (const arma::mat &x, arma::mat &xCentered)\
 *Creates a centered matrix, where centering is done by subtracting the sum over the columns (a column vector) from each column of the matrix.*  double **ClampNonNegative** (const double d)\
 *Forces a number to be non-negative, turning negative numbers into zero.*  double **ClampNonPositive** (const double d)\
 *Forces a number to be non-positive, turning positive numbers into zero.*  double **ClampRange** (double value, const double rangeMin, const double rangeMax)\
 *Clamp a number between a particular range.*  void **Orthogonalize** (const arma::mat &x, arma::mat &W)\
 *Orthogonalize x and return the result in W, using eigendecomposition.*  void **Orthogonalize** (arma::mat &x)\
 *Orthogonalize x in-place.*  int **RandInt** (const int hiExclusive)\
 *Generates a uniform random integer.*  int **RandInt** (const int lo, const int hiExclusive)\
 *Generates a uniform random integer.*  double **RandNormal** ()\
 *Generates a normally distributed random number with mean 0 and variance 1.*  double **RandNormal** (const double mean, const double variance)\
 *Generates a normally distributed random number with specified mean and variance.*  double **Random** ()\
 *Generates a uniform random number between 0 and 1.*  double **Random** (const double lo, const double hi)\
 *Generates a uniform random number in the specified range.*  void **RandomSeed** (const size\_t seed)\
 *Set the random seed used by the random functions (***Random()** *and* **RandInt()***).*  void **RandVector** (arma::vec &v)\
 *Overwrites a dimension-N vector to a random vector on the unit sphere in R^N.*  void **RemoveRows** (const arma::mat &input, const std::vector\< size\_t \> &rowsToRemove, arma::mat &output)\
 *Remove a certain set of rows in a matrix while copying to a second matrix.*  void **VectorPower** (arma::vec &vec, const double power)\
 *Auxiliary function to raise vector elements to a specific power.*  void **WhitenUsingEig** (const arma::mat &x, arma::mat &xWhitened, arma::mat &whiteningMatrix)\
 *Whitens a matrix using the eigendecomposition of the covariance matrix.*  void **WhitenUsingSVD** (const arma::mat &x, arma::mat &xWhitened, arma::mat &whiteningMatrix)\
 *Whitens a matrix using the singular value decomposition of the covariance matrix.*

### Variables

boost::mt19937 **randGen**\
 boost::normal\_distribution **randNormalDist**\
 boost::uniform\_01\
 \< boost::mt19937, double \> **randUniformDist**"\

## Detailed Description

Miscellaneous math routines.

## Function Documentation

### void mlpack::math::Center (const arma::mat &x, arma::mat &xCentered)

Creates a centered matrix, where centering is done by subtracting the sum over the columns (a column vector) from each column of the matrix.

**Parameters:**

*x* Input matrix \
 *xCentered* Matrix to write centered output into

### double mlpack::math::ClampNonNegative (const doubled)` [inline]`

Forces a number to be non-negative, turning negative numbers into zero. Avoids branching costs (this is a measurable improvement).

**Parameters:**

*d* Double to clamp.

**Returns:**

0 if d \< 0, d otherwise.

Definition at line 38 of file clamp.hpp.

Referenced by ClampRange().

### double mlpack::math::ClampNonPositive (const doubled)` [inline]`

Forces a number to be non-positive, turning positive numbers into zero. Avoids branching costs (this is a measurable improvement).

**Parameters:**

*d* Double to clamp. \
 *0* if d \> 0, d otherwise.

Definition at line 50 of file clamp.hpp.

Referenced by ClampRange().

### double mlpack::math::ClampRange (doublevalue, const doublerangeMin, const doublerangeMax)` [inline]`

Clamp a number between a particular range.

**Parameters:**

*value* The number to clamp. \
 *rangeMin* The first of the range. \
 *rangeMax* The last of the range.

**Returns:**

max(rangeMin, min(rangeMax, d)).

Definition at line 63 of file clamp.hpp.

References ClampNonNegative(), and ClampNonPositive().

### void mlpack::math::Orthogonalize (const arma::mat &x, arma::mat &W)

Orthogonalize x and return the result in W, using eigendecomposition. We will be using the formula $ W = x (x^T x)^{-0.5} $.

### void mlpack::math::Orthogonalize (arma::mat &x)

Orthogonalize x in-place. This could be sped up by a custom implementation.

### int mlpack::math::RandInt (const inthiExclusive)` [inline]`

Generates a uniform random integer.

Definition at line 100 of file random.hpp.

References randGen, and randUniformDist.

Referenced by mlpack::sparse\_coding::DataDependentRandomInitializer::Initialize(), mlpack::amf::RandomAcolInitialization\< p \>::Initialize(), and mlpack::kernel::RandomSelection::Select().

### int mlpack::math::RandInt (const intlo, const inthiExclusive)` [inline]`

Generates a uniform random integer.

Definition at line 114 of file random.hpp.

References randGen, and randUniformDist.

### double mlpack::math::RandNormal ()` [inline]`

Generates a normally distributed random number with mean 0 and variance 1.

Definition at line 131 of file random.hpp.

References randGen, and randNormalDist.

### double mlpack::math::RandNormal (const doublemean, const doublevariance)` [inline]`

Generates a normally distributed random number with specified mean and variance.

**Parameters:**

*mean* Mean of distribution. \
 *variance* Variance of distribution.

Definition at line 143 of file random.hpp.

References randGen, and randNormalDist.

### double mlpack::math::Random ()` [inline]`

Generates a uniform random number between 0 and 1.

Definition at line 72 of file random.hpp.

References randGen, and randUniformDist.

### double mlpack::math::Random (const doublelo, const doublehi)` [inline]`

Generates a uniform random number in the specified range.

Definition at line 86 of file random.hpp.

References randGen, and randUniformDist.

### void mlpack::math::RandomSeed (const size\_tseed)` [inline]`

Set the random seed used by the random functions (**Random()** and **RandInt()**). The seed is casted to a 32-bit integer before being given to the random number generator, but a size\_t is taken as a parameter for API consistency.

**Parameters:**

*seed* Seed for the random number generator.

Definition at line 63 of file random.hpp.

References randGen.

### void mlpack::math::RandVector (arma::vec &v)

Overwrites a dimension-N vector to a random vector on the unit sphere in R^N.

### void mlpack::math::RemoveRows (const arma::mat &input, const std::vector\< size\_t \> &rowsToRemove, arma::mat &output)

Remove a certain set of rows in a matrix while copying to a second matrix.

**Parameters:**

*input* Input matrix to copy. \
 *rowsToRemove* Vector containing indices of rows to be removed. \
 *output* Matrix to copy non-removed rows into.

### void mlpack::math::VectorPower (arma::vec &vec, const doublepower)

Auxiliary function to raise vector elements to a specific power. The sign is ignored in the power operation and then re-added. Useful for eigenvalues.

### void mlpack::math::WhitenUsingEig (const arma::mat &x, arma::mat &xWhitened, arma::mat &whiteningMatrix)

Whitens a matrix using the eigendecomposition of the covariance matrix. Whitening means the covariance matrix of the result is the identity matrix.

### void mlpack::math::WhitenUsingSVD (const arma::mat &x, arma::mat &xWhitened, arma::mat &whiteningMatrix)

Whitens a matrix using the singular value decomposition of the covariance matrix. Whitening means the covariance matrix of the result is the identity matrix.

## Variable Documentation

### boost::mt19937 mlpack::math::randGen

Referenced by RandInt(), RandNormal(), Random(), and RandomSeed().

### boost::normal\_distribution mlpack::math::randNormalDist

Referenced by RandNormal().

### boost::uniform\_01\<boost::mt19937, double\> mlpack::math::randUniformDist

Referenced by RandInt(), and Random().

## Author

Generated automatically by Doxygen for MLPACK from the source code.
