Multidimensional matrix

class CDenseMDMatrix

Multidimensional matrix in dense format.

Public Functions

CDenseMDMatrix()

Basic constructor. Creates an empty matrix.

CDenseMDMatrix(const std::vector<unsigned> &_vTypes, const std::vector<unsigned> &_vClasses)

Constructor creating a matrix with the given types and number of classes.

Parameters
  • _vTypes – Distribution types.

  • _vClasses – Numbers of classes of distributions.

bool SetDimensions(unsigned _nType, unsigned _nClasses)

Sets new dimensions set with erasing of old data.

Type is one of the EDistrTypes.

Parameters
  • _nType – Distribution type.

  • _nClasses – Number of classes.

Returns

Error flag.

bool SetDimensions(unsigned _nType1, unsigned _nClasses1, unsigned _nType2, unsigned _nClasses2)

Sets new dimensions set with erasing of old data.

Types are types of the EDistrTypes.

Parameters
  • _nType1 – Fisrt distribution type.

  • _nClasses1 – Number of classes of first distribution.

  • _nType2 – Second distribution type.

  • _nClasses2 – Number of classes of second distribution.

Returns

Error flag.

bool SetDimensions(unsigned _nType1, unsigned _nClasses1, unsigned _nType2, unsigned _nClasses2, unsigned _nType3, unsigned _nClasses3)

Sets new dimensions set with erasing of old data.

Types are one of the EDistrTypes.

Parameters
  • _nType1 – First distribution type.

  • _nClasses1 – Number of classes of first distribution.

  • _nType2 – Second distribution type.

  • _nClasses2 – Number of classes of second distribution.

  • _nType3 – Third distribution type.

  • _nClasses3 – Number of classes of third distribution.

Returns

Error flag.

bool SetDimensions(const std::vector<unsigned> &_vTypes, const std::vector<unsigned> &_vClasses)

Sets new dimensions set with erasing of old data.

Types is the vector of EDistrTypes.

Parameters
  • _vTypes – Distribution types.

  • _vClasses – Numbers of classes of distributions.

Returns

Error flag.

std::vector<unsigned> GetDimensions() const

Returns vector with all current defined dimensions types.

Returns

Vector of defined dimensions types.

std::vector<unsigned> GetClasses() const

Returns vector with current numbers of classes.

Returns

Vector of defined classes.

size_t GetDimensionsNumber() const

Returns current number of dimensions.

Returns

Number of defined dimensions

void Clear()

Clears all data and information about dimensions.

void ClearData()

Clears all data in the matrix by setting all values to 0.

Dimensions set won’t be erased.

const double *GetDataPtr() const

Returns const pointer to data.

Returns

Const pointer to data.

double *GetDataPtr()

Returns pointer to data.

Returns

Pointer to data.

size_t GetDataLength() const

Returns length of the plain data array.

Returns

Total data length.

double GetValue(unsigned _nDim, unsigned _nCoord) const

Returns value by specified dimension and coordinate with possible reducing of dimensions set.

Returns -1 on error.

Parameters
  • _nDim – Target dimension.

  • _nCoord – Coordinate.

Returns

Value by specified dimension and coordinate.

double GetValue(unsigned _nDim1, unsigned _nCoord1, unsigned _nDim2, unsigned _nCoord2) const

Returns value by specified dimensions and coordinates with possible reducing of dimensions set.

Returns -1 on error.

Parameters
  • _nDim1 – First dimension.

  • _nCoord1 – First coordinate.

  • _nDim2 – Second dimension.

  • _nCoord2 – Second coordinate.

Returns

Value by specified dimensions and coordinates.

double GetValue(unsigned _nDim1, unsigned _nCoord1, unsigned _nDim2, unsigned _nCoord2, unsigned _nDim3, unsigned _nCoord3) const

Returns value by specified dimensions and coordinates with possible reducing of dimensions set.

Returns -1 on error.

Parameters
  • _nDim1 – First dimension.

  • _nCoord1 – First coordinate.

  • _nDim2 – Second dimension.

  • _nCoord2 – Second coordinate.

  • _nDim3 – Third dimension.

  • _nCoord3 – Third coordinate.

Returns

Value by specified dimensions and coordinates.

double GetValue(const std::vector<unsigned> &_vCoords) const

Returns value by specified coordinates according to the full defined set of dimensions.

Returns -1 on error.

Parameters

_vCoords – Coordinates.

Returns

Value by specified coordinates.

double GetValue(const std::vector<unsigned> &_vDims, const std::vector<unsigned> &_vCoords) const

Returns value by specified coordinates and dimensions sequence.

Dimensions set can be reduced. Returns -1 on error.

Parameters
  • _vDims – Dimensions.

  • _vCoords – Coordinates.

Returns

Value by specified dimensions and coordinates sequence.

std::vector<double> GetVectorValue(unsigned _nDim) const

Returns vector of values according to specified dimension with possible reducing of dimensions set.

Parameters

_nDim – Target dimension.

Returns

Vector of values according to specified dimension.

bool GetVectorValue(unsigned _nDim, std::vector<double> &_vResult) const

Returns vector of values according to specified dimension with possible reducing of dimensions set.

Parameters
  • _nDim – Target dimension.

  • _vResult – Vector of values according to specified dimension.

Returns

Error flag.

bool GetVectorValue(unsigned _nDim1, unsigned _nCoord1, unsigned _nDim2, std::vector<double> &_vResult) const

Returns vector of values according to specified dimensions and coordinates with possible reducing of dimensions set.

Parameters
  • _nDim1 – First dimension.

  • _nCoord1 – First coordinate.

  • _nDim2 – Second dimension.

  • _vResult – Vector of values according to specified dimensions and coordinates.

Returns

Error flag.

bool GetVectorValue(unsigned _nDim1, unsigned _nCoord1, unsigned _nDim2, unsigned _nCoord2, unsigned _nDim3, std::vector<double> &_vResult) const

Returns vector of values according to specified dimensions and coordinates with possible reducing of dimensions set.

Parameters
  • _nDim1 – First dimension.

  • _nCoord1 – First coordinate.

  • _nDim2 – Second dimension.

  • _nCoord2 – Second coordinate.

  • _nDim3 – Third dimension.

  • _vResult – Vector of values according to specified dimensions and coordinates.

Returns

Error flag.

std::vector<double> GetVectorValue(unsigned _nDim1, unsigned _nCoord1, unsigned _nDim2, unsigned _nCoord2, unsigned _nDim3) const

Returns vector of values according to specified dimensions and coordinates with possible reducing of dimensions set.

Parameters
  • _nDim1 – First dimension.

  • _nCoord1 – First coordinate.

  • _nDim2 – Second dimension.

  • _nCoord2 – Second coordinate.

  • _nDim3 – Third dimension.

Returns

Vector of values according to specified dimensions and coordinates.

bool GetVectorValue(const std::vector<unsigned> &_vCoords, std::vector<double> &_vResult) const

Returns vector of values by specified coordinates according to a full defined dimensions set.

Parameters
  • _vCoords – Coordinates.

  • _vResult – Vector of values by specified coordinates.

Returns

Error flag.

bool GetVectorValue(const std::vector<unsigned> &_vDims, const std::vector<unsigned> &_vCoords, std::vector<double> &_vResult) const

Returns vector of values according to specified dimensions and coordinates.

Dimensions set can be reduced.

Parameters
  • _vDims – Dimensions.

  • _vCoords – Coordinates.

  • _vResult – Vector of values according to specified dimensions and coordinates.

Returns

Error flag.

std::vector<double> GetVectorValue(const std::vector<unsigned> &_vDims, const std::vector<unsigned> &_vCoords) const

Returns vector of values according to specified dimensions and coordinates. Dimensions set can be reduced.

Parameters
  • _vDims – Dimensions.

  • _vCoords – Coordinates.

Returns

Vector of values according to specified dimensions and coordinates.

bool SetValue(unsigned _nCoord, double _dValue)

Sets value in 1D-matrix by specified coordinate.

Sets value only if the number of dimensions is the same as in the matrix.

Parameters
  • _nCoord – Coordinate.

  • _dValue – New value.

Returns

Error flag.

bool SetValue(unsigned _nDim1, unsigned _nCoord1, unsigned _nCoord2, double _dValue)

Sets value in 2D-matrix by specified dimensions and coordinates.

Sets value only if the number of dimensions is the same as in the matrix.

Parameters
  • _nDim1 – First dimension.

  • _nCoord1 – First coordinate.

  • _nCoord2 – Second coordinate.

  • _dValue – New value.

Returns

Error flag.

bool SetValue(unsigned _nDim1, unsigned _nCoord1, unsigned _nDim2, unsigned _nCoord2, unsigned _nCoord3, double _dValue)

Sets value in 3D-matrix by specified dimensions and coordinates.

Sets value only if the number of dimensions is the same as in the matrix.

Parameters
  • _nDim1 – First dimension.

  • _nCoord1 – First coordinate.

  • _nDim2 – Second dimension.

  • _nCoord2 – Second coordinate.

  • _nCoord3 – Third coordinate.

  • _dValue – New value.

Returns

Error flag.

bool SetValue(const std::vector<unsigned> &_vCoords, double _dValue)

Sets value by specified coordinates according to the full defined set of dimensions.

Sets value only if the number of dimensions is the same as in the matrix.

Parameters
  • _vCoords – Coordinates.

  • _dValue – New value.

Returns

Error flag.

bool SetValue(const std::vector<unsigned> &_vDims, const std::vector<unsigned> &_vCoords, double _dValue)

Sets value by specified coordinates and dimensions sequence.

Sets value only if the number of dimensions is the same as in the matrix.

Parameters
  • _vDims – Dimensions.

  • _vCoords – Coordinates.

  • _dValue – New value.

Returns

Error flag.

bool SetVectorValue(const std::vector<double> &_vValue)

Sets vector of values in 1D-matrix.

Parameters

_vValue – New values.

Returns

Error flag.

bool SetVectorValue(unsigned _nDim, unsigned _nCoord, const std::vector<double> &_vValue)

Sets vector of values according to specified dimensions and coordinates in 2D-matrix.

Parameters
  • _nDim – Target dimension.

  • _nCoord – Coordinate.

  • _vValue – New values.

Returns

Error flag.

bool SetVectorValue(unsigned _nDim1, unsigned _nCoord1, unsigned _nDim2, unsigned _nCoord2, const std::vector<double> &_vValue)

Sets vector of values according to specified dimensions and coordinates in 3D-matrix.

Parameters
  • _nDim1 – First dimension.

  • _nCoord1 – First coordinate.

  • _nDim2 – Second dimension.

  • _nCoord2 – Second coordinate.

  • _vValue – New values.

Returns

Error flag.

bool SetVectorValue(const std::vector<unsigned> &_vCoords, const std::vector<double> &_vValue)

Sets vector of values by specified coordinates according to a full defined dimensions set.

Sets values only if the number of coordinates is one less than number of dimensions in the matrix.

Parameters
  • _vCoords – Coordinates.

  • _vValue – New values.

Returns

Whether an error has occurred.

Returns

Error flag.

bool SetVectorValue(const std::vector<unsigned> &_vDims, const std::vector<unsigned> &_vCoords, const std::vector<double> &_vValue)

Sets vector of values according to specified dimensions and coordinates.

Sets values only if the number of dimensions is one less than in the matrix.

Parameters
  • _vDims – Dimensions.

  • _vCoords – Coordinates.

  • _vValue – New values.

Returns

Error flag.

bool IsNormalized()

Checks if the matrix is normalized.

Returns

Whether the matrix is normalized.

void Normalize()

Normalizes the matrix so that the sum of all elements equals to 1.

CDenseMDMatrix operator+(const CDenseMDMatrix &_matrix)

Adds matrix with the same dimensions.

If dimensions are not the same, than the empty matrix will be returned.

Parameters

_matrix – Other matrix.

CDenseMDMatrix operator-(const CDenseMDMatrix &_matrix)

Subtracts matrix with the same dimensions.

If dimensions are not the same, than the empty matrix will be returned.

Parameters

_matrix – Other matrix.

CDenseMDMatrix operator*(double _dFactor)

Multiplication of the matrix by a coefficient.

Parameters

_dFactor – Coefficient.