SHOGUN  v3.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions
SGMatrix< T > Class Template Reference

Detailed Description

template<class T>
class shogun::SGMatrix< T >

shogun matrix

Definition at line 27 of file SGMatrix.h.

Inheritance diagram for SGMatrix< T >:
Inheritance graph
[legend]

Public Member Functions

 SGMatrix ()
 SGMatrix (bool ref_counting)
 SGMatrix (T *m, index_t nrows, index_t ncols, bool ref_counting=true)
 SGMatrix (index_t nrows, index_t ncols, bool ref_counting=true)
 SGMatrix (const SGMatrix &orig)
virtual ~SGMatrix ()
T * get_column_vector (index_t col) const
SGVector< T > get_row_vector (index_t row) const
SGVector< T > get_diagonal_vector () const
const T & operator() (index_t i_row, index_t i_col) const
const T & operator[] (index_t index) const
T & operator() (index_t i_row, index_t i_col)
T & operator[] (index_t index)
SGMatrix< T > get ()
bool operator== (SGMatrix< T > &other)
bool equals (SGMatrix< T > &other)
void set_const (T const_elem)
void zero ()
max_single ()
SGMatrix< T > clone ()
void compute_few_eigenvectors (double *matrix_, double *&eigenvalues, double *&eigenvectors, int n, int il, int iu)
void center ()
void remove_column_mean ()
void display_matrix (const char *name="matrix") const
void load (CFile *loader)
void save (CFile *saver)
template<>
void zero ()
template<>
complex128_t max_single ()
template<>
void display_matrix (const bool *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const char *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const int8_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const uint8_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const int16_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const uint16_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const int32_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const uint32_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const int64_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const uint64_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const float32_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const float64_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const floatmax_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
void display_matrix (const complex128_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix)
template<>
SGMatrix< char > create_identity_matrix (index_t size, char scale)
template<>
SGMatrix< int8_t > create_identity_matrix (index_t size, int8_t scale)
template<>
SGMatrix< uint8_t > create_identity_matrix (index_t size, uint8_t scale)
template<>
SGMatrix< bool > create_identity_matrix (index_t size, bool scale)
template<>
SGMatrix< int16_t > create_identity_matrix (index_t size, int16_t scale)
template<>
SGMatrix< uint16_t > create_identity_matrix (index_t size, uint16_t scale)
template<>
SGMatrix< int32_t > create_identity_matrix (index_t size, int32_t scale)
template<>
SGMatrix< uint32_t > create_identity_matrix (index_t size, uint32_t scale)
template<>
SGMatrix< int64_t > create_identity_matrix (index_t size, int64_t scale)
template<>
SGMatrix< uint64_t > create_identity_matrix (index_t size, uint64_t scale)
template<>
SGMatrix< float32_tcreate_identity_matrix (index_t size, float32_t scale)
template<>
SGMatrix< float64_tcreate_identity_matrix (index_t size, float64_t scale)
template<>
SGMatrix< floatmax_tcreate_identity_matrix (index_t size, floatmax_t scale)
template<>
SGMatrix< complex128_tcreate_identity_matrix (index_t size, complex128_t scale)
template<>
void load (CFile *loader)
template<>
void save (CFile *saver)
int32_t ref_count ()

Static Public Member Functions

static T * clone_matrix (const T *matrix, int32_t nrows, int32_t ncols)
static void transpose_matrix (T *&matrix, int32_t &num_feat, int32_t &num_vec)
static void create_diagonal_matrix (T *matrix, T *v, int32_t size)
static SGMatrix< T > create_identity_matrix (index_t size, T scale)
static SGMatrix< float64_tcreate_centering_matrix (index_t size)
static SGVector< float64_tcompute_eigenvectors (SGMatrix< float64_t > matrix)
static double * compute_eigenvectors (double *matrix, int n, int m)
static SGMatrix< float64_tmatrix_multiply (SGMatrix< float64_t > A, SGMatrix< float64_t > B, bool transpose_A=false, bool transpose_B=false, float64_t scale=1.0)
static void inverse (SGMatrix< float64_t > matrix)
static float64_tpinv (float64_t *matrix, int32_t rows, int32_t cols, float64_t *target=NULL)
static float64_t trace (float64_t *mat, int32_t cols, int32_t rows)
static T * get_row_sum (T *matrix, int32_t m, int32_t n)
static T * get_column_sum (T *matrix, int32_t m, int32_t n)
static void center_matrix (T *matrix, int32_t m, int32_t n)
static void display_matrix (const T *matrix, int32_t rows, int32_t cols, const char *name="matrix", const char *prefix="")
static void display_matrix (const SGMatrix< T > matrix, const char *name="matrix", const char *prefix="")
static SGMatrix< T > get_allocated_matrix (index_t num_rows, index_t num_cols, SGMatrix< T > pre_allocated=SGMatrix< T >())

Public Attributes

T * matrix
index_t num_rows
index_t num_cols

Protected Member Functions

virtual void copy_data (const SGReferencedData &orig)
virtual void init_data ()
virtual void free_data ()
void copy_refcount (const SGReferencedData &orig)
int32_t ref ()
int32_t unref ()

Constructor & Destructor Documentation

SGMatrix ( )

default constructor

Definition at line 26 of file SGMatrix.cpp.

SGMatrix ( bool  ref_counting)

constructor for setting reference counting while not creating the matrix in memory (use this for static SGMatrix instances)

Definition at line 32 of file SGMatrix.cpp.

SGMatrix ( T *  m,
index_t  nrows,
index_t  ncols,
bool  ref_counting = true 
)

constructor for setting params

Definition at line 38 of file SGMatrix.cpp.

SGMatrix ( index_t  nrows,
index_t  ncols,
bool  ref_counting = true 
)

constructor to create new matrix in memory

Definition at line 43 of file SGMatrix.cpp.

SGMatrix ( const SGMatrix< T > &  orig)

copy constructor

Definition at line 50 of file SGMatrix.cpp.

~SGMatrix ( )
virtual

empty destructor

Definition at line 56 of file SGMatrix.cpp.

Member Function Documentation

void center ( )

Centers the matrix, i.e. removes column/row mean from columns/rows

Definition at line 216 of file SGMatrix.cpp.

void center_matrix ( T *  matrix,
int32_t  m,
int32_t  n 
)
static

Centers matrix (e.g. kernel matrix in feature space INPLACE

Definition at line 222 of file SGMatrix.cpp.

SGMatrix< T > clone ( )

clone matrix

Definition at line 130 of file SGMatrix.cpp.

T * clone_matrix ( const T *  matrix,
int32_t  nrows,
int32_t  ncols 
)
static

clone matrix

Definition at line 137 of file SGMatrix.cpp.

SGVector< float64_t > compute_eigenvectors ( SGMatrix< float64_t matrix)
static

compute eigenvalues and eigenvectors of symmetric matrix using LAPACK

Parameters
matrixsymmetric matrix to compute eigenproblem. Is overwritten and contains orthonormal eigenvectors afterwards
Returns
eigenvalues vector with eigenvalues equal to number of rows in matrix

Definition at line 781 of file SGMatrix.cpp.

double * compute_eigenvectors ( double *  matrix,
int  n,
int  m 
)
static

compute eigenvalues and eigenvectors of symmetric matrix

Parameters
matrixoverwritten and contains n orthonormal eigenvectors
n
m
Returns
eigenvalues (array of length n, to be deleted[])

Definition at line 798 of file SGMatrix.cpp.

void compute_few_eigenvectors ( double *  matrix_,
double *&  eigenvalues,
double *&  eigenvectors,
int  n,
int  il,
int  iu 
)

compute few eigenpairs of a symmetric matrix using LAPACK DSYEVR method (Relatively Robust Representations). Has at least O(n^3/3) complexity

Parameters
matrix_symmetric matrix
eigenvaluescontains iu-il+1 eigenvalues in ascending order (to be free'd)
eigenvectorscontains iu-il+1 orthonormal eigenvectors of given matrix column-wise (to be free'd)
ndimension of matrix
illow index of requested eigenpairs (1<=il<=n)
iuhigh index of requested eigenpairs (1<=il<=iu<=n)

Definition at line 820 of file SGMatrix.cpp.

void copy_data ( const SGReferencedData orig)
protectedvirtual

overridden to copy data

Implements SGReferencedData.

Definition at line 906 of file SGMatrix.cpp.

void copy_refcount ( const SGReferencedData orig)
protectedinherited

copy refcount

Definition at line 58 of file SGReferencedData.cpp.

SGMatrix< float64_t > create_centering_matrix ( index_t  size)
static

returns the centering matrix, given by H=I-1/n*O, where I is the identity matrix, O is a square matrix of ones of size n Multiplied from the left hand side, subtracts from each column its mean. Multiplied from the right hand side, subtracts from each row its mean (so from each dimension of a SHOGUN feature)

Note that H*H=H=H^T

Parameters
sizesize of centering matrix

Definition at line 707 of file SGMatrix.cpp.

void create_diagonal_matrix ( T *  matrix,
T *  v,
int32_t  size 
)
static

create diagonal matrix

Definition at line 165 of file SGMatrix.cpp.

static SGMatrix<T> create_identity_matrix ( index_t  size,
scale 
)
static

returns the identity matrix, scaled by a factor

Parameters
sizesize of square identity matrix
scale(optional) scaling factor
SGMatrix< char > create_identity_matrix ( index_t  size,
char  scale 
)

Definition at line 530 of file SGMatrix.cpp.

SGMatrix< int8_t > create_identity_matrix ( index_t  size,
int8_t  scale 
)

Definition at line 537 of file SGMatrix.cpp.

SGMatrix< uint8_t > create_identity_matrix ( index_t  size,
uint8_t  scale 
)

Definition at line 550 of file SGMatrix.cpp.

SGMatrix< bool > create_identity_matrix ( index_t  size,
bool  scale 
)

Definition at line 563 of file SGMatrix.cpp.

SGMatrix< int16_t > create_identity_matrix ( index_t  size,
int16_t  scale 
)

Definition at line 576 of file SGMatrix.cpp.

SGMatrix< uint16_t > create_identity_matrix ( index_t  size,
uint16_t  scale 
)

Definition at line 589 of file SGMatrix.cpp.

SGMatrix< int32_t > create_identity_matrix ( index_t  size,
int32_t  scale 
)

Definition at line 602 of file SGMatrix.cpp.

SGMatrix< uint32_t > create_identity_matrix ( index_t  size,
uint32_t  scale 
)

Definition at line 615 of file SGMatrix.cpp.

SGMatrix< int64_t > create_identity_matrix ( index_t  size,
int64_t  scale 
)

Definition at line 628 of file SGMatrix.cpp.

SGMatrix< uint64_t > create_identity_matrix ( index_t  size,
uint64_t  scale 
)

Definition at line 641 of file SGMatrix.cpp.

SGMatrix< float32_t > create_identity_matrix ( index_t  size,
float32_t  scale 
)

Definition at line 654 of file SGMatrix.cpp.

SGMatrix< float64_t > create_identity_matrix ( index_t  size,
float64_t  scale 
)

Definition at line 667 of file SGMatrix.cpp.

SGMatrix< floatmax_t > create_identity_matrix ( index_t  size,
floatmax_t  scale 
)

Definition at line 680 of file SGMatrix.cpp.

SGMatrix< complex128_t > create_identity_matrix ( index_t  size,
complex128_t  scale 
)

Definition at line 693 of file SGMatrix.cpp.

void display_matrix ( const char *  name = "matrix") const

display matrix

Definition at line 264 of file SGMatrix.cpp.

static void display_matrix ( const T *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name = "matrix",
const char *  prefix = "" 
)
static

display matrix (useful for debugging)

void display_matrix ( const SGMatrix< T >  matrix,
const char *  name = "matrix",
const char *  prefix = "" 
)
static

display matrix

Definition at line 270 of file SGMatrix.cpp.

void display_matrix ( const bool *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 278 of file SGMatrix.cpp.

void display_matrix ( const char *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 296 of file SGMatrix.cpp.

void display_matrix ( const int8_t *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 314 of file SGMatrix.cpp.

void display_matrix ( const uint8_t *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 332 of file SGMatrix.cpp.

void display_matrix ( const int16_t *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 350 of file SGMatrix.cpp.

void display_matrix ( const uint16_t *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 368 of file SGMatrix.cpp.

void display_matrix ( const int32_t *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 387 of file SGMatrix.cpp.

void display_matrix ( const uint32_t *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 405 of file SGMatrix.cpp.

void display_matrix ( const int64_t *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 422 of file SGMatrix.cpp.

void display_matrix ( const uint64_t *  matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 440 of file SGMatrix.cpp.

void display_matrix ( const float32_t matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 458 of file SGMatrix.cpp.

void display_matrix ( const float64_t matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 476 of file SGMatrix.cpp.

void display_matrix ( const floatmax_t matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 494 of file SGMatrix.cpp.

void display_matrix ( const complex128_t matrix,
int32_t  rows,
int32_t  cols,
const char *  name,
const char *  prefix 
)

Definition at line 512 of file SGMatrix.cpp.

bool equals ( SGMatrix< T > &  other)

operator overload for element-wise matrix comparison. Note that only numerical data is compared

Parameters
othermatrix to compare with
Returns
true iff all elements are equal

Definition at line 74 of file SGMatrix.cpp.

void free_data ( )
protectedvirtual

overridden to free data

Implements SGReferencedData.

Definition at line 922 of file SGMatrix.cpp.

SGMatrix<T> get ( )

get the matrix (no copying is done here)

Returns
the refcount increased matrix

Definition at line 109 of file SGMatrix.h.

SGMatrix< T > get_allocated_matrix ( index_t  num_rows,
index_t  num_cols,
SGMatrix< T >  pre_allocated = SGMatrix<T>() 
)
static

Simple helper method that returns a matrix with allocated memory for a given size. A pre_allocated one can optionally be specified in order to use that. Basically just for having dimension check encapsulated.

Parameters
num_rowsrows of returned matrix
num_colscolumns of returned matrix
pre_allocatedoptional matrix that is returned instead of new matrix. Make sure dimensions match
Returns
matrix with allocated memory of specified size

Definition at line 876 of file SGMatrix.cpp.

T * get_column_sum ( T *  matrix,
int32_t  m,
int32_t  n 
)
static

sums up all columns of a matrix and returns the resulting columnvector

Definition at line 203 of file SGMatrix.cpp.

T* get_column_vector ( index_t  col) const

get a column vector

Parameters
colcolumn index

Definition at line 52 of file SGMatrix.h.

SGVector< T > get_diagonal_vector ( ) const

get a main diagonal vector. Matrix is not required to be square.

Returns
main diagonal vector

Definition at line 978 of file SGMatrix.cpp.

T * get_row_sum ( T *  matrix,
int32_t  m,
int32_t  n 
)
static

sums up all rows of a matrix and returns the resulting rowvector

Definition at line 190 of file SGMatrix.cpp.

SGVector< T > get_row_vector ( index_t  row) const

get a row vector

Parameters
rowrow index
Returns
row vector

Definition at line 967 of file SGMatrix.cpp.

void init_data ( )
protectedvirtual

overridden to initialize empty data

Implements SGReferencedData.

Definition at line 914 of file SGMatrix.cpp.

void inverse ( SGMatrix< float64_t matrix)
static

inverses square matrix in-place

Definition at line 771 of file SGMatrix.cpp.

void load ( CFile loader)

load matrix from file

Parameters
loaderFile object via which to load data

Definition at line 931 of file SGMatrix.cpp.

void load ( CFile loader)

Definition at line 946 of file SGMatrix.cpp.

SGMatrix< float64_t > matrix_multiply ( SGMatrix< float64_t A,
SGMatrix< float64_t B,
bool  transpose_A = false,
bool  transpose_B = false,
float64_t  scale = 1.0 
)
static

Computes scale* A*B, where A and B may be transposed. Asserts for matching inner dimensions.

Parameters
Amatrix A
transpose_Aoptional whether A should be transposed before
Bmatrix B
transpose_Boptional whether B should be transposed before
scaleoptional scaling factor for result

Definition at line 833 of file SGMatrix.cpp.

complex128_t max_single ( )

Definition at line 123 of file SGMatrix.cpp.

T max_single ( )

returns the maximum single element of the matrix

Definition at line 110 of file SGMatrix.cpp.

const T& operator() ( index_t  i_row,
index_t  i_col 
) const

operator overload for matrix read only access

Parameters
i_row
i_col

Definition at line 74 of file SGMatrix.h.

T& operator() ( index_t  i_row,
index_t  i_col 
)

operator overload for matrix r/w access

Parameters
i_row
i_col

Definition at line 91 of file SGMatrix.h.

bool operator== ( SGMatrix< T > &  other)

check for pointer identity

Definition at line 62 of file SGMatrix.cpp.

const T& operator[] ( index_t  index) const

operator overload for matrix read only access

Parameters
indexto access

Definition at line 82 of file SGMatrix.h.

T& operator[] ( index_t  index)

operator overload for matrix r/w access

Parameters
indexto access

Definition at line 99 of file SGMatrix.h.

float64_t * pinv ( float64_t matrix,
int32_t  rows,
int32_t  cols,
float64_t target = NULL 
)
static

return the pseudo inverse for matrix when matrix has shape (rows, cols) the pseudo inverse has (cols, rows)

Definition at line 732 of file SGMatrix.cpp.

int32_t ref ( )
protectedinherited

increase reference counter

Returns
reference count

Definition at line 67 of file SGReferencedData.cpp.

int32_t ref_count ( )
inherited

display reference counter

Returns
reference count

Definition at line 44 of file SGReferencedData.cpp.

void remove_column_mean ( )

remove column mean

Definition at line 247 of file SGMatrix.cpp.

void save ( CFile saver)

save matrix to file

Parameters
saverFile object via which to save data

Definition at line 952 of file SGMatrix.cpp.

void save ( CFile saver)

Definition at line 961 of file SGMatrix.cpp.

void set_const ( const_elem)

set matrix to a constant

Definition at line 89 of file SGMatrix.cpp.

float64_t trace ( float64_t mat,
int32_t  cols,
int32_t  rows 
)
static

compute trace

Definition at line 180 of file SGMatrix.cpp.

void transpose_matrix ( T *&  matrix,
int32_t &  num_feat,
int32_t &  num_vec 
)
static

transpose matrix

Definition at line 147 of file SGMatrix.cpp.

int32_t unref ( )
protectedinherited

decrement reference counter and deallocate object if refcount is zero before or after decrementing it

Returns
reference count

Definition at line 87 of file SGReferencedData.cpp.

void zero ( )

Definition at line 103 of file SGMatrix.cpp.

void zero ( )

fill matrix with zeros

Definition at line 96 of file SGMatrix.cpp.

Member Data Documentation

T* matrix

matrix

Definition at line 296 of file SGMatrix.h.

index_t num_cols

number of columns of matrix

Definition at line 300 of file SGMatrix.h.

index_t num_rows

number of rows of matrix

Definition at line 298 of file SGMatrix.h.


The documentation for this class was generated from the following files:

SHOGUN Machine Learning Toolbox - Documentation