# Class Matrix
A simple n-dimensional matrix type.

Defined in | <seqan/align.h>
Signature | `template <typename TValue[, unsigned DIMENSION]> class Matrix;`

## Template Parameters

`TValue` | Type of matrix entries.
`DIMENSION` | Dimension of the matrix. Use 0 for n-dimensional, values > 0 for a matrix with `DIMENSION` dimensions. Defaults to 0.

## Member Function Overview

- `TMatrix Matrix::operator+(lhs, rhs);`
  Sum operator for the Matrix type.

## Interface Function Overview

- `void resize(matrix[, val]);`
  Resize the matrix and fill it with a given value or zeroes.
- `TMatrix transpose(matrix);`
  Tranpose a 2D Matrix.

## Member Functions Detail

### `TMatrix Matrix::operator+(lhs, rhs);`

Sum operator for the Matrix type.

#### Parameters

`lhs` | First summand.
`rhs` | Second summand.

#### Returns

`TMatrix` | The resulting matrix of same type as `lhs` and `rhs`.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

## Interface Functions Detail

### `void resize(matrix[, val]);`

Resize the matrix and fill it with a given value or zeroes.

#### Parameters

`matrix` | The Matrix to fill.
`val` | The optional value to fill the matrix with.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

### `TMatrix transpose(matrix);`

Tranpose a 2D Matrix.

#### Parameters

`matrix` | The matrix to tranpose.

#### Returns

`TMatrix` | The resulting tranposed matrix.

#### Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

#### Dox Sources

    /*!
     * @class Matrix
     *
     * @headerfile <seqan/align.h>
     *
     * @brief A simple n-dimensional matrix type.
     *
     * @signature template <typename TValue[, unsigned DIMENSION]> class Matrix;
     *
     * @tparam TValue Type of matrix entries.
     * @tparam DIMENSION Dimension of the matrix. Use 0 for n-dimensional, values
     *                   &gt; 0 for a matrix with <tt>DIMENSION</tt> dimensions.
     *                   Defaults to 0.
     *
     * @fn Matrix::operator+
     *
     * @brief Sum operator for the Matrix type.
     *
     * @signature TMatrix Matrix::operator+(lhs, rhs);
     *
     * @param[in] lhs First summand.
     * @param[in] rhs Second summand.
     *
     * @return TMatrix The resulting matrix of same type as <tt>lhs</tt> and
     *                 <tt>rhs</tt>.
     *
     * @fn Matrix#resize
     *
     * @brief Resize the matrix and fill it with a given value or zeroes.
     *
     * @signature void resize(matrix[, val]);
     *
     * @param[in,out] matrix The Matrix to fill.
     * @param[in] val The optional value to fill the matrix with.
     *
     * @fn Matrix#transpose
     *
     * @brief Tranpose a 2D Matrix.
     *
     * @signature TMatrix transpose(matrix);
     *
     * @param[in] matrix The matrix to tranpose.
     *
     * @return TMatrix The resulting tranposed matrix.
     */