math
-
class sptk::Matrix
-
Public Functions
-
explicit Matrix(int num_row = 0, int num_column = 0)
- Parameters
num_row – [in] Number of rows.
num_column – [in] Number of columns.
-
Matrix(int num_row, int num_column, const std::vector<double> &vector)
- Parameters
num_row – [in] Number of rows.
num_column – [in] Number of columns.
vector – [in] Diagonal elements.
-
inline int GetNumRow() const
- Returns
Number of rows.
-
inline int GetNumColumn() const
- Returns
Number of columns.
-
void Resize(int num_row, int num_column)
Resize matrix.
- Parameters
num_row – [in] Number of rows.
num_column – [in] Number of columns.
-
inline double *operator[](int row)
- Parameters
row – [in] Row.
-
inline const double *operator[](int row) const
- Parameters
row – [in] Row.
-
double &At(int row, int column)
Get element.
- Parameters
row – [in] i.
column – [in] j.
- Returns
(i, j)-th element.
-
const double &At(int row, int column) const
Get element.
- Parameters
row – [in] i.
column – [in] j.
- Returns
(i, j)-th element.
-
Matrix operator-(const Matrix &matrix) const
- Parameters
matrix – [in] Subtrahend.
- Returns
Difference.
-
Matrix operator*(const Matrix &matrix) const
- Parameters
matrix – [in] Multiplicand.
- Returns
Product.
-
void Fill(double value)
Overwrite all elements with a value.
- Parameters
value – [in] Value.
-
void FillDiagonal(double value)
Overwrite diagonal elements with a value.
- Parameters
value – [in] Diagonal value.
-
void Negate()
Negate all elements of matrix.
-
bool Transpose(Matrix *transposed_matrix) const
Transpose matrix.
- Parameters
transposed_matrix – [out] Transposed matrix.
- Returns
True on success, false on failure.
-
bool GetSubmatrix(int row_offset, int num_row_of_submatrix, int column_offset, int num_column_of_submatrix, Matrix *submatrix) const
Get submatrix.
- Parameters
row_offset – [in] Offset of row.
num_row_of_submatrix – [in] Number of rows of submatrix.
column_offset – [in] Offset of column.
num_column_of_submatrix – [in] Number of columns of submatrix.
submatrix – [out] Submatrix.
- Returns
True on success, false on failure.
-
bool GetDeterminant(double *determinant) const
Compute determinant.
- Parameters
determinant – [out] Determinant.
- Returns
True on success, false on failure.
-
explicit Matrix(int num_row = 0, int num_column = 0)
-
class sptk::Matrix2D
2D matrix.
Public Functions
-
Matrix2D()
Make 2D matrix.
-
inline double *operator[](int row)
- Parameters
row – [in] Row.
-
inline const double *operator[](int row) const
- Parameters
row – [in] Row.
-
double &At(int row, int column)
Get element.
- Parameters
row – [in] i.
column – [in] j.
- Returns
(i, j)-th element.
-
const double &At(int row, int column) const
Get element.
- Parameters
row – [in] i.
column – [in] j.
- Returns
(i, j)-th element.
-
void Fill(double value)
Overwrite all elements with a value.
- Parameters
value – [in] Value.
-
void FillDiagonal(double value)
Overwrite diagonal elements with a value.
- Parameters
value – [in] Diagonal value.
-
void Negate()
Negate all elements of matrix.
Public Static Functions
-
static bool Add(const Matrix2D &matrix, Matrix2D *output)
Compute sum.
- Parameters
matrix – [in] Addend.
output – [inout] Result.
- Returns
True on success, false on failure.
-
static bool Add(const Matrix2D &first_matrix, const Matrix2D &second_matrix, Matrix2D *output)
Compute sum.
- Parameters
first_matrix – [in] Augend.
second_matrix – [in] Addend.
output – [out] Result.
- Returns
True on success, false on failure.
-
static bool Subtract(const Matrix2D &matrix, Matrix2D *output)
Compute difference.
- Parameters
matrix – [in] Subtrahend.
output – [inout] Result.
- Returns
True on success, false on failure.
-
static bool Subtract(const Matrix2D &first_matrix, const Matrix2D &second_matrix, Matrix2D *output)
Compute difference.
- Parameters
first_matrix – [in] Minuend.
second_matrix – [in] Subtrahend.
output – [out] Result.
- Returns
True on success, false on failure.
-
Matrix2D()
-
class sptk::SymmetricMatrix
Symmetric matrix.
Public Functions
-
explicit SymmetricMatrix(int num_dimension = 0)
- Parameters
num_dimension – [in] Size of matrix.
-
SymmetricMatrix(const SymmetricMatrix &matrix)
- Parameters
matrix – [in] Symmetric matrix.
-
SymmetricMatrix &operator=(const SymmetricMatrix &matrix)
- Parameters
matrix – [in] Symmetric matrix.
-
inline int GetNumDimension() const
- Returns
Number of dimensions.
-
void Resize(int num_dimension)
Resize matrix.
- Parameters
num_dimension – [in] Number of dimensions.
-
double &At(int row, int column)
Get element.
- Parameters
row – [in] i.
column – [in] j.
- Returns
(i, j)-th element.
-
const double &At(int row, int column) const
Get element.
- Parameters
row – [in] i.
column – [in] j.
- Returns
(i, j)-th element.
-
void Fill(double value)
Overwrite all elements with a value.
- Parameters
value – [in] Value.
-
bool GetDiagonal(std::vector<double> *diagonal_elements) const
Get diagonal elements.
- Parameters
diagonal_elements – [out] Diagonal elements.
- Returns
True on success, false on failure.
-
bool SetDiagonal(const std::vector<double> &diagonal_elements) const
Set diagonal elements.
- Parameters
diagonal_elements – [in] Diagonal elements.
- Returns
True on success, false on failure.
-
bool CholeskyDecomposition(SymmetricMatrix *lower_triangular_matrix, std::vector<double> *diagonal_elements) const
Perform Cholesky decomposition.
- Parameters
lower_triangular_matrix – [out] Lower triangular matrix.
diagonal_elements – [out] Diagonal elements.
- Returns
True on success, false on failure.
-
bool Invert(SymmetricMatrix *inverse_matrix) const
Compute inverse matrix.
- Parameters
inverse_matrix – [out] Inverse matrix.
- Returns
True on success, false on failure.
-
class Row
A row of symmetric matrix.a
Public Functions
-
inline Row(const SymmetricMatrix &matrix, int row)
- Parameters
matrix – [in] Symmetric matrix.
row – [in] Row index.
-
double &operator[](int column)
- Parameters
column – [in] Column index.
- Returns
Element.
-
const double &operator[](int column) const
- Parameters
column – [in] Column index.
- Returns
Element.
-
inline Row(const SymmetricMatrix &matrix, int row)
-
explicit SymmetricMatrix(int num_dimension = 0)
-
class sptk::SymmetricSystemSolver
Solve the following symmetric system:
is a symmetric matrix.The inputs are
and -th order constant vector:Public Functions
-
explicit SymmetricSystemSolver(int num_order)
- Parameters
num_order – [in] Order of vector,
.
-
inline int GetNumOrder() const
- Returns
Order of vector.
-
inline bool IsValid() const
- Returns
True if this object is valid.
-
bool Run(const SymmetricMatrix &coefficient_matrix, const std::vector<double> &constant_vector, std::vector<double> *solution_vector, SymmetricSystemSolver::Buffer *buffer) const
- Parameters
coefficient_matrix – [in]
matrix .constant_vector – [in]
-th order vector .solution_vector – [out]
-th order vector .buffer – [out] Buffer.
- Returns
True on success, false on failure.
-
class Buffer
Buffer for SymmetricSystemSolver class.
-
explicit SymmetricSystemSolver(int num_order)
-
class sptk::ToeplitzPlusHankelSystemSolver
Solve the following Toeplitz-plus-Hankel system:
The inputs are
Toeplitz coefficient vector: Hankel coefficient vector: constant vector:[1] G. Merchant and T. Parks, “Efficient solution of a Toeplitz-plus-Hankel coefficient matrix system of equations,” IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 30, no. 1, pp. 40-44, 1982.
Public Functions
-
ToeplitzPlusHankelSystemSolver(int num_order, bool coefficients_modification = true)
- Parameters
num_order – [in] Order of vector,
.coefficients_modification – [in] If true, perform coefficients modification.
-
inline int GetNumOrder() const
- Returns
Order of vector.
-
inline bool GetCoefficientsModificationFlag()
- Returns
Ture if coefficients modification is enabled.
-
inline bool IsValid() const
- Returns
True if this object is valid.
-
bool Run(const std::vector<double> &toeplitz_coefficient_vector, const std::vector<double> &hankel_coefficient_vector, const std::vector<double> &constant_vector, std::vector<double> *solution_vector, ToeplitzPlusHankelSystemSolver::Buffer *buffer) const
- Parameters
toeplitz_coefficient_vector – [in]
-th order coefficient vector of Toeplitz matrix .hankel_coefficient_vector – [in]
-th order coefficient vector of Hankel matrix .constant_vector – [in]
-th order constant vector .solution_vector – [out]
-th order solution vector .buffer – [out] Buffer.
- Returns
True on success, false on failure.
-
class Buffer
Buffer for ToeplitzPlusHankelSystemSolver class.
-
ToeplitzPlusHankelSystemSolver(int num_order, bool coefficients_modification = true)
-
class sptk::VandermondeSystemSolver
Solve the following Vandermonde system:
The inputs are
[1] W. H. Press, et al., “Numerical recipes in C: The art of scientific computing,” Cambridge University Press, pp. 90-92, 1992.
Public Functions
-
explicit VandermondeSystemSolver(int num_order)
- Parameters
num_order – [in] Order of vector,
.
-
inline int GetNumOrder() const
- Returns
Order of vector.
-
inline bool IsValid() const
- Returns
True if this object is valid.
-
bool Run(const std::vector<double> &coefficient_vector, const std::vector<double> &constant_vector, std::vector<double> *solution_vector, VandermondeSystemSolver::Buffer *buffer) const
- Parameters
coefficient_vector – [in]
-th order vector .constant_vector – [in]
-th order vector .solution_vector – [out]
-th order vector .buffer – [out] Buffer.
- Returns
True on success, false on failure.
-
class Buffer
Buffer for VandermondeSystemSolver class.
-
explicit VandermondeSystemSolver(int num_order)