cgv
Loading...
Searching...
No Matches
cgv::math::diag_mat< T > Struct Template Reference

A diagonal matrix type which internally stores the elements on the main diagonal in a vector. More...

#include <diag_mat.h>

Public Types

typedef vec< T >::value_type value_type
 
typedef vec< T >::reference reference
 
typedef vec< T >::const_reference const_reference
 
typedef vec< T >::pointer pointer
 
typedef vec< T >::const_pointer const_pointer
 
typedef vec< T >::iterator iterator
 
typedef vec< T >::const_iterator const_iterator
 
typedef vec< T >::reverse_iterator reverse_iterator
 
typedef vec< T >::const_reverse_iterator const_reverse_iterator
 
typedef iterator diag_iterator
 
typedef const diag_iterator const_diag_iterator
 
typedef std::reverse_iterator< diag_iterator > reverse_diag_iterator
 
typedef std::reverse_iterator< const_diag_iterator > const_reverse_diag_iterator
 

Public Member Functions

iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
reverse_iterator rbegin ()
 
reverse_iterator rend ()
 
const_reverse_iterator rbegin () const
 
const_reverse_iterator rend () const
 
diag_iterator diag_begin ()
 
diag_iterator diag_end ()
 
const_diag_iterator diag_begin () const
 
const_diag_iterator diag_end () const
 
reverse_diag_iterator diag_rbegin ()
 
reverse_diag_iterator diag_rend ()
 
const_reverse_diag_iterator diag_rbegin () const
 
const_reverse_diag_iterator diag_rend () const
 
unsigned size () const
 size of storage
 
unsigned nrows () const
 number of rows
 
unsigned ncols () const
 number of columns
 
 diag_mat ()
 standard constructor
 
 diag_mat (unsigned n)
 creates nxn diagonal matrix
 
 diag_mat (unsigned n, const T &c)
 creates nxn diagonal matrix and set all diagonal elements to c
 
 diag_mat (unsigned n, const T *marray)
 
 diag_mat (const vec< T > &dv)
 creates a diagonal matrix and set the diagonal vector to dv
 
 diag_mat (const mat< T > &m)
 creates a diagonal matrix and set the diagonal vector to diagonal entries of m
 
 diag_mat (const diag_mat< T > &m)
 copy constructor
 
virtual ~diag_mat ()
 destructor
 
T * data ()
 cast into array of element type
 
const T * data () const
 cast into array of const element type
 
diag_mat< T > sub_mat (unsigned top_left, unsigned size) const
 create sub diagonal matrix d(top_left)...d(top_left+size)
 
 operator const mat< T > () const
 cast into const full storage matrix
 
void resize (unsigned n)
 
void identity ()
 set diagonal matrix to identity
 
void fill (const T &c)
 fills all diagonal entries with c
 
void zeros ()
 fills all diagonal entries with zero
 
void exchange_diagonal_elements (unsigned i, unsigned j)
 exchange diagonal elements i and j
 
const T & operator() (unsigned i) const
 const access to the ith diagonal element
 
T & operator() (unsigned i)
 non const access to the ith diagonal element
 
const T & operator[] (unsigned i) const
 const access to the ith diagonal element
 
T & operator[] (unsigned i)
 non const access to the ith diagonal element
 
bool is_square ()
 returns true because diagonal matrices are always square
 
void transpose ()
 
diag_mat< T > & operator= (const diag_mat< T > &m)
 assignment of a matrix with the same element type
 
template<typename S >
diag_mat< T > & operator= (const diag_mat< S > &m)
 assignment of a matrix with a different element type
 
template<typename S >
diag_mat< T > & operator= (const vec< S > &v)
 assignment of a vector with a vector to set the diagonal
 
diag_mat< T > & operator= (const T &s)
 assignment of a scalar s to each element of the matrix
 
frobenius_norm () const
 returns the frobenius norm of matrix m
 
void identity (unsigned dim)
 set dim x dim identity matrix
 
void zero ()
 set zero matrix
 
diag_mat< T > & operator+= (const diag_mat< T > &d)
 in place addition of diagonal matrix
 
diag_mat< T > & operator-= (const diag_mat< T > &d)
 in place subtraction of diagonal matrix
 
diag_mat< T > & operator*= (const T &s)
 in place multiplication with scalar s
 
diag_mat< T > operator* (const T &s) const
 multiplication with scalar s
 
diag_mat< T > operator+ (const diag_mat< T > &d) const
 addition of diagonal matrix
 
diag_mat< T > operator- (const diag_mat< T > &d) const
 subtraction of diagonal matrix
 
vec< T > operator* (const vec< T > &v) const
 multiplication with vector
 
const up_tri_mat< T > operator* (const up_tri_mat< T > &m)
 matrix multiplication of matrix m by a diagonal matrix s
 
 operator mat< T > ()
 cast into full matrix type
 

Public Attributes

vec< T > _data
 pointer to data storage
 

Detailed Description

template<typename T>
struct cgv::math::diag_mat< T >

A diagonal matrix type which internally stores the elements on the main diagonal in a vector.

Definition at line 15 of file diag_mat.h.

Member Typedef Documentation

◆ const_diag_iterator

template<typename T >
typedef const diag_iterator cgv::math::diag_mat< T >::const_diag_iterator

Definition at line 34 of file diag_mat.h.

◆ const_iterator

template<typename T >
typedef vec<T>::const_iterator cgv::math::diag_mat< T >::const_iterator

Definition at line 29 of file diag_mat.h.

◆ const_pointer

template<typename T >
typedef vec<T>::const_pointer cgv::math::diag_mat< T >::const_pointer

Definition at line 26 of file diag_mat.h.

◆ const_reference

template<typename T >
typedef vec<T>::const_reference cgv::math::diag_mat< T >::const_reference

Definition at line 24 of file diag_mat.h.

◆ const_reverse_diag_iterator

template<typename T >
typedef std::reverse_iterator<const_diag_iterator> cgv::math::diag_mat< T >::const_reverse_diag_iterator

Definition at line 36 of file diag_mat.h.

◆ const_reverse_iterator

template<typename T >
typedef vec<T>::const_reverse_iterator cgv::math::diag_mat< T >::const_reverse_iterator

Definition at line 31 of file diag_mat.h.

◆ diag_iterator

template<typename T >
typedef iterator cgv::math::diag_mat< T >::diag_iterator

Definition at line 33 of file diag_mat.h.

◆ iterator

template<typename T >
typedef vec<T>::iterator cgv::math::diag_mat< T >::iterator

Definition at line 28 of file diag_mat.h.

◆ pointer

template<typename T >
typedef vec<T>::pointer cgv::math::diag_mat< T >::pointer

Definition at line 25 of file diag_mat.h.

◆ reference

template<typename T >
typedef vec<T>::reference cgv::math::diag_mat< T >::reference

Definition at line 23 of file diag_mat.h.

◆ reverse_diag_iterator

template<typename T >
typedef std::reverse_iterator<diag_iterator> cgv::math::diag_mat< T >::reverse_diag_iterator

Definition at line 35 of file diag_mat.h.

◆ reverse_iterator

template<typename T >
typedef vec<T>::reverse_iterator cgv::math::diag_mat< T >::reverse_iterator

Definition at line 30 of file diag_mat.h.

◆ value_type

template<typename T >
typedef vec<T>::value_type cgv::math::diag_mat< T >::value_type

Definition at line 22 of file diag_mat.h.

Constructor & Destructor Documentation

◆ diag_mat() [1/7]

template<typename T >
cgv::math::diag_mat< T >::diag_mat ( )
inline

standard constructor

Definition at line 75 of file diag_mat.h.

◆ diag_mat() [2/7]

template<typename T >
cgv::math::diag_mat< T >::diag_mat ( unsigned  n)
inlineexplicit

creates nxn diagonal matrix

Definition at line 80 of file diag_mat.h.

◆ diag_mat() [3/7]

template<typename T >
cgv::math::diag_mat< T >::diag_mat ( unsigned  n,
const T &  c 
)
inline

creates nxn diagonal matrix and set all diagonal elements to c

Definition at line 85 of file diag_mat.h.

References cgv::math::diag_mat< T >::fill().

◆ diag_mat() [4/7]

template<typename T >
cgv::math::diag_mat< T >::diag_mat ( unsigned  n,
const T *  marray 
)
inline

Definition at line 92 of file diag_mat.h.

◆ diag_mat() [5/7]

template<typename T >
cgv::math::diag_mat< T >::diag_mat ( const vec< T > &  dv)
inline

creates a diagonal matrix and set the diagonal vector to dv

Definition at line 97 of file diag_mat.h.

◆ diag_mat() [6/7]

template<typename T >
cgv::math::diag_mat< T >::diag_mat ( const mat< T > &  m)
inline

creates a diagonal matrix and set the diagonal vector to diagonal entries of m

Definition at line 102 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data, cgv::math::mat< T >::ncols(), and cgv::math::mat< T >::nrows().

◆ diag_mat() [7/7]

template<typename T >
cgv::math::diag_mat< T >::diag_mat ( const diag_mat< T > &  m)
inline

copy constructor

Definition at line 111 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ ~diag_mat()

template<typename T >
virtual cgv::math::diag_mat< T >::~diag_mat ( )
inlinevirtual

destructor

Definition at line 119 of file diag_mat.h.

Member Function Documentation

◆ begin() [1/2]

template<typename T >
iterator cgv::math::diag_mat< T >::begin ( )
inline

Definition at line 38 of file diag_mat.h.

◆ begin() [2/2]

template<typename T >
const_iterator cgv::math::diag_mat< T >::begin ( ) const
inline

Definition at line 40 of file diag_mat.h.

◆ data() [1/2]

template<typename T >
T * cgv::math::diag_mat< T >::data ( )
inline

cast into array of element type

Definition at line 124 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ data() [2/2]

template<typename T >
const T * cgv::math::diag_mat< T >::data ( ) const
inline

cast into array of const element type

Definition at line 130 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ diag_begin() [1/2]

template<typename T >
diag_iterator cgv::math::diag_mat< T >::diag_begin ( )
inline

Definition at line 47 of file diag_mat.h.

◆ diag_begin() [2/2]

template<typename T >
const_diag_iterator cgv::math::diag_mat< T >::diag_begin ( ) const
inline

Definition at line 49 of file diag_mat.h.

◆ diag_end() [1/2]

template<typename T >
diag_iterator cgv::math::diag_mat< T >::diag_end ( )
inline

Definition at line 48 of file diag_mat.h.

◆ diag_end() [2/2]

template<typename T >
const_diag_iterator cgv::math::diag_mat< T >::diag_end ( ) const
inline

Definition at line 50 of file diag_mat.h.

◆ diag_rbegin() [1/2]

template<typename T >
reverse_diag_iterator cgv::math::diag_mat< T >::diag_rbegin ( )
inline

Definition at line 51 of file diag_mat.h.

◆ diag_rbegin() [2/2]

template<typename T >
const_reverse_diag_iterator cgv::math::diag_mat< T >::diag_rbegin ( ) const
inline

Definition at line 53 of file diag_mat.h.

◆ diag_rend() [1/2]

template<typename T >
reverse_diag_iterator cgv::math::diag_mat< T >::diag_rend ( )
inline

Definition at line 52 of file diag_mat.h.

◆ diag_rend() [2/2]

template<typename T >
const_reverse_diag_iterator cgv::math::diag_mat< T >::diag_rend ( ) const
inline

Definition at line 54 of file diag_mat.h.

◆ end() [1/2]

template<typename T >
iterator cgv::math::diag_mat< T >::end ( )
inline

Definition at line 39 of file diag_mat.h.

◆ end() [2/2]

template<typename T >
const_iterator cgv::math::diag_mat< T >::end ( ) const
inline

Definition at line 41 of file diag_mat.h.

◆ exchange_diagonal_elements()

template<typename T >
void cgv::math::diag_mat< T >::exchange_diagonal_elements ( unsigned  i,
unsigned  j 
)
inline

exchange diagonal elements i and j

Definition at line 183 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ fill()

◆ frobenius_norm()

template<typename T >
T cgv::math::diag_mat< T >::frobenius_norm ( ) const
inline

returns the frobenius norm of matrix m

Definition at line 256 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data, and cgv::math::diag_mat< T >::size().

◆ identity() [1/2]

template<typename T >
void cgv::math::diag_mat< T >::identity ( )
inline

set diagonal matrix to identity

Definition at line 163 of file diag_mat.h.

References cgv::math::diag_mat< T >::fill().

◆ identity() [2/2]

template<typename T >
void cgv::math::diag_mat< T >::identity ( unsigned  dim)
inline

set dim x dim identity matrix

Definition at line 269 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data, and cgv::math::diag_mat< T >::size().

◆ is_square()

template<typename T >
bool cgv::math::diag_mat< T >::is_square ( )
inline

returns true because diagonal matrices are always square

Definition at line 214 of file diag_mat.h.

◆ ncols()

template<typename T >
unsigned cgv::math::diag_mat< T >::ncols ( ) const
inline

number of columns

Definition at line 69 of file diag_mat.h.

References cgv::math::diag_mat< T >::size().

Referenced by cgv::math::diag_mat< T >::operator*().

◆ nrows()

◆ operator const mat< T >()

template<typename T >
cgv::math::diag_mat< T >::operator const mat< T > ( ) const
inline

cast into const full storage matrix

Definition at line 144 of file diag_mat.h.

◆ operator mat< T >()

template<typename T >
cgv::math::diag_mat< T >::operator mat< T > ( )
inline

cast into full matrix type

Definition at line 356 of file diag_mat.h.

◆ operator()() [1/2]

template<typename T >
T & cgv::math::diag_mat< T >::operator() ( unsigned  i)
inline

non const access to the ith diagonal element

Definition at line 195 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ operator()() [2/2]

template<typename T >
const T & cgv::math::diag_mat< T >::operator() ( unsigned  i) const
inline

◆ operator*() [1/3]

template<typename T >
diag_mat< T > cgv::math::diag_mat< T >::operator* ( const T &  s) const
inline

multiplication with scalar s

Definition at line 306 of file diag_mat.h.

◆ operator*() [2/3]

template<typename T >
const up_tri_mat< T > cgv::math::diag_mat< T >::operator* ( const up_tri_mat< T > &  m)
inline

matrix multiplication of matrix m by a diagonal matrix s

Definition at line 342 of file diag_mat.h.

References cgv::math::diag_mat< T >::operator()(), and cgv::math::diag_mat< T >::size().

◆ operator*() [3/3]

template<typename T >
vec< T > cgv::math::diag_mat< T >::operator* ( const vec< T > &  v) const
inline

◆ operator*=()

template<typename T >
diag_mat< T > & cgv::math::diag_mat< T >::operator*= ( const T &  s)
inline

in place multiplication with scalar s

Definition at line 299 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ operator+()

template<typename T >
diag_mat< T > cgv::math::diag_mat< T >::operator+ ( const diag_mat< T > &  d) const
inline

addition of diagonal matrix

Definition at line 314 of file diag_mat.h.

◆ operator+=()

template<typename T >
diag_mat< T > & cgv::math::diag_mat< T >::operator+= ( const diag_mat< T > &  d)
inline

in place addition of diagonal matrix

Definition at line 283 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data, and cgv::math::diag_mat< T >::nrows().

◆ operator-()

template<typename T >
diag_mat< T > cgv::math::diag_mat< T >::operator- ( const diag_mat< T > &  d) const
inline

subtraction of diagonal matrix

Definition at line 322 of file diag_mat.h.

◆ operator-=()

template<typename T >
diag_mat< T > & cgv::math::diag_mat< T >::operator-= ( const diag_mat< T > &  d)
inline

in place subtraction of diagonal matrix

Definition at line 291 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data, and cgv::math::diag_mat< T >::nrows().

◆ operator=() [1/4]

template<typename T >
template<typename S >
diag_mat< T > & cgv::math::diag_mat< T >::operator= ( const diag_mat< S > &  m)
inline

assignment of a matrix with a different element type

Definition at line 232 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data, and cgv::math::diag_mat< T >::size().

◆ operator=() [2/4]

template<typename T >
diag_mat< T > & cgv::math::diag_mat< T >::operator= ( const diag_mat< T > &  m)
inline

assignment of a matrix with the same element type

Definition at line 224 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ operator=() [3/4]

template<typename T >
diag_mat< T > & cgv::math::diag_mat< T >::operator= ( const T &  s)
inline

assignment of a scalar s to each element of the matrix

Definition at line 250 of file diag_mat.h.

References cgv::math::diag_mat< T >::fill().

◆ operator=() [4/4]

template<typename T >
template<typename S >
diag_mat< T > & cgv::math::diag_mat< T >::operator= ( const vec< S > &  v)
inline

assignment of a vector with a vector to set the diagonal

Definition at line 243 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ operator[]() [1/2]

template<typename T >
T & cgv::math::diag_mat< T >::operator[] ( unsigned  i)
inline

non const access to the ith diagonal element

Definition at line 207 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ operator[]() [2/2]

template<typename T >
const T & cgv::math::diag_mat< T >::operator[] ( unsigned  i) const
inline

const access to the ith diagonal element

Definition at line 201 of file diag_mat.h.

References cgv::math::diag_mat< T >::_data.

◆ rbegin() [1/2]

template<typename T >
reverse_iterator cgv::math::diag_mat< T >::rbegin ( )
inline

Definition at line 42 of file diag_mat.h.

◆ rbegin() [2/2]

template<typename T >
const_reverse_iterator cgv::math::diag_mat< T >::rbegin ( ) const
inline

Definition at line 44 of file diag_mat.h.

◆ rend() [1/2]

template<typename T >
reverse_iterator cgv::math::diag_mat< T >::rend ( )
inline

Definition at line 43 of file diag_mat.h.

◆ rend() [2/2]

template<typename T >
const_reverse_iterator cgv::math::diag_mat< T >::rend ( ) const
inline

Definition at line 45 of file diag_mat.h.

◆ resize()

template<typename T >
void cgv::math::diag_mat< T >::resize ( unsigned  n)
inline

Definition at line 157 of file diag_mat.h.

◆ size()

◆ sub_mat()

template<typename T >
diag_mat< T > cgv::math::diag_mat< T >::sub_mat ( unsigned  top_left,
unsigned  size 
) const
inline

create sub diagonal matrix d(top_left)...d(top_left+size)

Definition at line 136 of file diag_mat.h.

References cgv::math::diag_mat< T >::size().

◆ transpose()

template<typename T >
void cgv::math::diag_mat< T >::transpose ( )
inline

Definition at line 220 of file diag_mat.h.

◆ zero()

template<typename T >
void cgv::math::diag_mat< T >::zero ( )
inline

set zero matrix

Definition at line 277 of file diag_mat.h.

References cgv::math::diag_mat< T >::fill().

◆ zeros()

template<typename T >
void cgv::math::diag_mat< T >::zeros ( )
inline

fills all diagonal entries with zero

Definition at line 177 of file diag_mat.h.

References cgv::math::diag_mat< T >::fill().

Member Data Documentation

◆ _data


The documentation for this struct was generated from the following file: