DMRITool  v0.1.1-139-g860d86b4
Diffusion MRI Tool
Public Types | Public Member Functions | List of all members
utl::NDArray< T, 4 > Class Template Reference

#include <utl4thOrderTensor.h>

+ Inheritance diagram for utl::NDArray< T, 4 >:
+ Collaboration diagram for utl::NDArray< T, 4 >:

Detailed Description

template<class T>
class utl::NDArray< T, 4 >

NDArray<T,4> is a 4th order tensor.

Author
Jian Cheng
Date
05-22-2016

Definition at line 33 of file utl4thOrderTensor.h.

Public Types

typedef Superclass::ConstIterator ConstIterator
 
typedef Superclass::ConstPointer ConstPointer
 
typedef Superclass::ConstReference ConstReference
 
typedef Superclass::Iterator Iterator
 
typedef Superclass::Pointer Pointer
 
typedef Superclass::Reference Reference
 
typedef Superclass::ScalarValueType ScalarValueType
 
typedef NDArray Self
 
typedef Superclass::ShapeType ShapeType
 
typedef Superclass::SizeType SizeType
 
typedef NDArrayBase< T, 4 > Superclass
 
typedef Superclass::ValueType ValueType
 
- Public Types inherited from utl::NDArrayBase< T, 4 >
enum  
 
typedef const ValueTypeConstIterator
 
typedef const ValueTypeConstPointer
 
typedef const ValueTypeConstReference
 
typedef ValueTypeIterator
 
typedef ValueTypePointer
 
typedef ValueTypeReference
 
typedef utl::remove_complex_t< T > ScalarValueType
 
typedef NDArrayBase Self
 
typedef Superclass::ShapeType ShapeType
 
typedef Superclass::SizeType SizeType
 
typedef Expr< NDArrayBase< T, Dim >, T > Superclass
 
typedef T ValueType
 
- Public Types inherited from utl::Expr< NDArrayBase< T, Dim >, T >
typedef SizeType const * ShapeType
 
typedef unsigned int SizeType
 
typedef T ValueType
 

Public Member Functions

void EigenDecompositionWithMinorSymmetry (NDArray< T, 1 > &valReal, NDArray< T, 1 > &valImg) const
 
void EigenDecompositionWithMinorSymmetry (NDArray< T, 1 > &valReal, NDArray< T, 1 > &valImg, std::vector< NDArray< T, 2 > > &matRealR, std::vector< NDArray< T, 2 > > &matImgR) const
 
void EigenDecompositionWithMinorSymmetry (NDArray< T, 1 > &valReal, NDArray< T, 1 > &valImg, std::vector< NDArray< T, 2 > > &matRealR, std::vector< NDArray< T, 2 > > &matImgR, std::vector< NDArray< T, 2 > > &matRealL, std::vector< NDArray< T, 2 > > &matImgL) const
 
NDArray< T, 2 > GetRefSubMatrix (const int i, const int j) const
 
bool IsMajorSymmetric () const
 
bool IsMinorSymmetric () const
 
void MajorSymmetrize ()
 
void MinorSymmetrize ()
 
 NDArray ()
 
 NDArray (const NDArray< T, 4 > &mat)
 
template<typename EType >
 NDArray (const Expr< EType, typename EType::ValueType > &expr)
 
template<typename TMatrixValueType >
 NDArray (const NDArray< TMatrixValueType, 4 > &r)
 
 NDArray (NDArray< T, 4 > &&r)
 
 NDArray (const ShapeType &shape)
 
 NDArray (const T *vec, const SizeType s0, const SizeType s1, const SizeType s2, const SizeType s3)
 
 NDArray (const SizeType s0, const SizeType s1, const SizeType s2, const SizeType s3)
 
 NDArray (const SizeType s0, const SizeType s1, const SizeType s2, const SizeType s3, const T r)
 
 NDArray (const T *vec, const ShapeType &shape)
 
 NDArray (const ShapeType &shape, const T r)
 
Reference operator() (unsigned int i, unsigned int j, unsigned int k, unsigned int l)
 
ConstReference operator() (unsigned int i, unsigned int j, unsigned int k, unsigned int l) const
 
NDArray< T, 4 > & operator= (NDArray< T, 4 > &r)
 
NDArray< T, 4 > & operator= (NDArray< T, 4 > &&r)
 
bool ReSize (const SizeType s0, const SizeType s1, const SizeType s2, const SizeType s3)
 
- Public Member Functions inherited from utl::NDArrayBase< T, 4 >
 __Array_Saver_Scalar (+=) __Array_Saver_Scalar(-
 
AbsoluteMaxValue () const
 
AbsoluteMinValue () const
 
void Apply (const FuncT &func, NDArrayBase< T, Dim > &vec) const
 
void Apply (T(*f)(T), NDArrayBase< T, Dim > &vec) const
 
void Apply (T(*f)(T const &), NDArrayBase< T, Dim > &vec) const
 
unsigned ArgAbsoluteMax () const
 
unsigned ArgAbsoluteMin () const
 
unsigned ArgMax () const
 
unsigned ArgMin () const
 
Reference Back ()
 
ConstReference Back () const
 
Iterator Begin ()
 
ConstIterator Begin () const
 
ConstIterator cBegin () const
 
ConstIterator cEnd () const
 
void Clear ()
 
void CopyData (T *const data, const ShapeType &shape)
 
NDArrayBase< T, Dim > & CopyIn (T const *ptr, const int size, const int start=0)
 
void CopyOut (T *ptr, const int size, const int start=0) const
 
ConstReverseIterator crBegin () const
 
ConstReverseIterator crEnd () const
 
NDArrayBase< T, Dim > & ElementAbsolute (T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementAbsolute (NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & ElementAdd (T *const vec, T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementAxpby (T *const vec, const T alpha, const T beta)
 
NDArrayBase< T, Dim > & ElementCos (T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementCos (NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & ElementDivide (T *const vec, T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementExp (T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementExp (NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & ElementInverse (T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementInverse (NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & ElementMultiply (T *const vec, T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementSin (T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementSin (NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & ElementSqrt (T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementSqrt (NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & ElementSquare (T *outVec=NULL)
 
NDArrayBase< T, Dim > & ElementSquare (NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & ElementSubstract (T *const vec, T *outVec=NULL)
 
Iterator End ()
 
ConstIterator End () const
 
Eval (int i) const
 
void Fill (const T &value)
 
NDArrayBase< T, Dim > & Flip ()
 
T * GetData ()
 
const T * GetData () const
 
ConstReference GetElement (unsigned short index) const
 
NDArrayBase< T, Dim > GetElementAbsolute () const
 
NDArrayBase< T, Dim > GetElementCos () const
 
NDArrayBase< T, Dim > GetElementExp () const
 
NDArrayBase< T, Dim > GetElementInverse () const
 
NDArrayBase< T, Dim > GetElementSin () const
 
NDArrayBase< T, Dim > GetElementSqrt () const
 
NDArrayBase< T, Dim > GetElementSquare () const
 
void GetIndex (const SizeType offset, SizeType index[Dimension]) const
 
double GetInfNorm () const
 
bool GetIsShared () const
 
GetMean () const
 
GetMedian () const
 
SizeType GetOffset (const ShapeType &shapeIndex) const
 
const SizeTypeGetOffSetTable () const
 
double GetOneNorm () const
 
NDArray< T, SubDimensionGetRefSubArray (const int i) const
 
NDArray< T, Dim > GetRefSubArray (const int istart, const int iend) const
 
double GetRootMeanSquares () const
 
const ShapeType GetShape () const
 
SizeType GetSize () const
 
double GetSquaredTwoNorm () const
 
GetSum () const
 
double GetTwoNorm () const
 
int GetZeroNorm (const double eps=1e-10) const
 
void HardThreshold (const double threshold)
 
ValueType InnerProduct (const NDArrayBase< T, Dim > &vec) const
 
bool IsEmpty () const
 
bool IsEqual (const NDArrayBase< T, Dim > &r, const double eps) const
 
bool IsSameShape (const EType &src) const
 
bool IsSameShape (const ShapeType &shape) const
 
bool IsSameSize (const ShapeType &shape) const
 
bool IsSameValues (const NDArrayBase< T, Dim > &r, const double eps) const
 
bool IsZero () const
 
MaxValue () const
 
MinValue () const
 
 NDArrayBase ()
 
 NDArrayBase (const ShapeType &shape)
 
 NDArrayBase (const NDArrayBase< T, Dim > &vec)
 
 NDArrayBase (NDArrayBase< T, Dim > &&vec)
 
 NDArrayBase (const Expr< EType, typename EType::ValueType > &expr)
 
 NDArrayBase (const T *vec, const ShapeType &shape)
 
 NDArrayBase (const ShapeType &shape, const T r)
 
 NDArrayBase (const NDArrayBase< TValue, Dim > &r)
 
int NNZ (const double eps=1e-10) const
 
NDArrayBase< T, Dim > & operator saver (const T val)
 
bool operator!= (const NDArrayBase< T, Dim > &r) const
 
NDArrayBase< T, Dim > & operator%= (const Expr< EType, typename EType::ValueType > &src)
 
NDArrayBase< T, Dim > & operator%= (const NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & operator%= (const T val)
 
Reference operator() (const ShapeType &shape)
 
ConstReference operator() (const ShapeType &shape) const
 
NDArrayBase< T, Dim > & operator+= (const Expr< EType, typename EType::ValueType > &src)
 
NDArrayBase< T, Dim > & operator+= (const NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & operator-= (const Expr< EType, typename EType::ValueType > &src)
 
NDArrayBase< T, Dim > & operator-= (const NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & operator/= (const Expr< EType, typename EType::ValueType > &src)
 
NDArrayBase< T, Dim > & operator/= (const NDArrayBase< T, Dim > &vec)
 
NDArrayBase< T, Dim > & operator/= (const T val)
 
NDArrayBase< T, Dim > & operator= (const Expr< EType, typename EType::ValueType > &src)
 
Dim & operator= (const NDArrayBase< T, Dim > &r)
 
NDArrayBase< T, Dim > & operator= (NDArrayBase< T, Dim > &&r)
 
NDArrayBase< T, Dim > & operator= (const NDArrayBase< TValueType, Dim > &r)
 
NDArrayBase< T, Dim > & operator= (const std::initializer_list< T > &r)
 
NDArrayBase< T, Dim > & operator= (const std::vector< T > &r)
 
NDArrayBase< T, Dim > & operator= (const T r)
 
bool operator== (const NDArrayBase< T, Dim > &r) const
 
Reference operator[] (short index)
 
ConstReference operator[] (short index) const
 
Reference operator[] (unsigned short index)
 
ConstReference operator[] (unsigned short index) const
 
Reference operator[] (int index)
 
ConstReference operator[] (int index) const
 
Reference operator[] (unsigned int index)
 
ConstReference operator[] (unsigned int index) const
 
Reference operator[] (long index)
 
ConstReference operator[] (long index) const
 
Reference operator[] (unsigned long index)
 
ConstReference operator[] (unsigned long index) const
 
Reference operator[] (long long index)
 
ConstReference operator[] (long long index) const
 
Reference operator[] (unsigned long long index)
 
ConstReference operator[] (unsigned long long index) const
 
void Print (std::ostream &os, const char *separate=" ") const
 
void PrintInfo (std::ostream &os, const char *separate=" ") const
 
void PrintWithIndex (std::ostream &os, const char *separate=" ") const
 
ReverseIterator rBegin ()
 
ConstReverseIterator rBegin () const
 
ReverseIterator rEnd ()
 
ConstReverseIterator rEnd () const
 
NDArrayBase< T, Dim > & ReShape (const ShapeType &shape)
 
bool ReSize (const ShapeType &shape)
 
NDArrayBase< T, Dim > & Scale (const T a)
 
void SetData (T *const data, const ShapeType &shape)
 
void SetElement (unsigned short index, ConstReference value)
 
SizeType Size () const
 
void SoftThreshold (const double threshold)
 
void Swap (NDArrayBase< T, Dim > &vec)
 
 ~NDArrayBase ()
 
- Public Member Functions inherited from utl::Expr< NDArrayBase< T, Dim >, T >
const NDArrayBase< T, Dim > & ConstRef (void) const
 
const ShapeType GetShape () const
 
NDArrayBase< T, Dim > & Ref (void)
 

Additional Inherited Members

- Static Public Member Functions inherited from utl::NDArrayBase< T, 4 >
static constexpr SizeType GetDimension ()
 
- Static Public Member Functions inherited from utl::Expr< NDArrayBase< T, Dim >, T >
static SizeType GetDimension ()
 
- Static Public Attributes inherited from utl::NDArrayBase< T, 4 >
static constexpr SizeType SubDimension
 
- Protected Member Functions inherited from utl::NDArrayBase< T, 4 >
void ClearData ()
 
void ClearShape ()
 
void ComputeOffSetTable ()
 
- Protected Attributes inherited from utl::NDArrayBase< T, 4 >
T * m_Data
 
bool m_IsShared
 
SizeType m_OffSetTable [Dimension]
 
SizeType m_Shape [Dimension]
 

Member Typedef Documentation

template<class T >
typedef Superclass::ConstIterator utl::NDArray< T, 4 >::ConstIterator

Definition at line 49 of file utl4thOrderTensor.h.

template<class T >
typedef Superclass::ConstPointer utl::NDArray< T, 4 >::ConstPointer

Definition at line 45 of file utl4thOrderTensor.h.

template<class T >
typedef Superclass::ConstReference utl::NDArray< T, 4 >::ConstReference

Definition at line 47 of file utl4thOrderTensor.h.

template<class T >
typedef Superclass::Iterator utl::NDArray< T, 4 >::Iterator

Definition at line 48 of file utl4thOrderTensor.h.

template<class T >
typedef Superclass::Pointer utl::NDArray< T, 4 >::Pointer

Definition at line 44 of file utl4thOrderTensor.h.

template<class T >
typedef Superclass::Reference utl::NDArray< T, 4 >::Reference

Definition at line 46 of file utl4thOrderTensor.h.

template<class T >
typedef Superclass::ScalarValueType utl::NDArray< T, 4 >::ScalarValueType

Definition at line 40 of file utl4thOrderTensor.h.

template<class T >
typedef NDArray utl::NDArray< T, 4 >::Self

Definition at line 36 of file utl4thOrderTensor.h.

template<class T >
typedef Superclass::ShapeType utl::NDArray< T, 4 >::ShapeType

Definition at line 43 of file utl4thOrderTensor.h.

template<class T >
typedef Superclass::SizeType utl::NDArray< T, 4 >::SizeType

Definition at line 42 of file utl4thOrderTensor.h.

template<class T >
typedef NDArrayBase<T,4> utl::NDArray< T, 4 >::Superclass

Definition at line 37 of file utl4thOrderTensor.h.

template<class T >
typedef Superclass::ValueType utl::NDArray< T, 4 >::ValueType

Definition at line 39 of file utl4thOrderTensor.h.

Constructor & Destructor Documentation

template<class T >
utl::NDArray< T, 4 >::NDArray ( )
inline

Definition at line 64 of file utl4thOrderTensor.h.

template<class T >
utl::NDArray< T, 4 >::NDArray ( const NDArray< T, 4 > &  mat)
inline

Definition at line 66 of file utl4thOrderTensor.h.

template<class T >
template<typename EType >
utl::NDArray< T, 4 >::NDArray ( const Expr< EType, typename EType::ValueType > &  expr)
inline

Definition at line 69 of file utl4thOrderTensor.h.

template<class T >
template<typename TMatrixValueType >
utl::NDArray< T, 4 >::NDArray ( const NDArray< TMatrixValueType, 4 > &  r)
inline

Definition at line 73 of file utl4thOrderTensor.h.

template<class T >
utl::NDArray< T, 4 >::NDArray ( NDArray< T, 4 > &&  r)
inline

Definition at line 76 of file utl4thOrderTensor.h.

References utl::NDArray< T, Dim >::operator=().

+ Here is the call graph for this function:

template<class T >
utl::NDArray< T, 4 >::NDArray ( const ShapeType shape)
inlineexplicit

Definition at line 81 of file utl4thOrderTensor.h.

template<class T >
utl::NDArray< T, 4 >::NDArray ( const T *  vec,
const SizeType  s0,
const SizeType  s1,
const SizeType  s2,
const SizeType  s3 
)
inline

Definition at line 83 of file utl4thOrderTensor.h.

References __utl_ndarray_alloc_blah, utl::NDArrayBase< T, Dim >::m_Data, and utl::NDArrayBase< T, Dim >::Size().

+ Here is the call graph for this function:

template<class T >
utl::NDArray< T, 4 >::NDArray ( const SizeType  s0,
const SizeType  s1,
const SizeType  s2,
const SizeType  s3 
)
inline

Definition at line 91 of file utl4thOrderTensor.h.

References __utl_ndarray_alloc_blah.

template<class T >
utl::NDArray< T, 4 >::NDArray ( const SizeType  s0,
const SizeType  s1,
const SizeType  s2,
const SizeType  s3,
const T  r 
)
inline

Definition at line 98 of file utl4thOrderTensor.h.

References __utl_ndarray_alloc_blah, and utl::NDArrayBase< T, Dim >::Fill().

+ Here is the call graph for this function:

template<class T >
utl::NDArray< T, 4 >::NDArray ( const T *  vec,
const ShapeType shape 
)
inline

Constructor assumes input points to array of correct size. Values are copied individually instead of with a binary copy. This allows the T's assignment operator to be executed.

Definition at line 111 of file utl4thOrderTensor.h.

template<class T >
utl::NDArray< T, 4 >::NDArray ( const ShapeType shape,
const T  r 
)
inline

Constructor to initialize entire array to one value.

Definition at line 116 of file utl4thOrderTensor.h.

Member Function Documentation

template<class T >
void utl::NDArray< T, 4 >::EigenDecompositionWithMinorSymmetry ( NDArray< T, 1 > &  valReal,
NDArray< T, 1 > &  valImg 
) const
inline
template<class T >
void utl::NDArray< T, 4 >::EigenDecompositionWithMinorSymmetry ( NDArray< T, 1 > &  valReal,
NDArray< T, 1 > &  valImg,
std::vector< NDArray< T, 2 > > &  matRealR,
std::vector< NDArray< T, 2 > > &  matImgR 
) const
inline
template<class T >
void utl::NDArray< T, 4 >::EigenDecompositionWithMinorSymmetry ( NDArray< T, 1 > &  valReal,
NDArray< T, 1 > &  valImg,
std::vector< NDArray< T, 2 > > &  matRealR,
std::vector< NDArray< T, 2 > > &  matImgR,
std::vector< NDArray< T, 2 > > &  matRealL,
std::vector< NDArray< T, 2 > > &  matImgL 
) const
inline
template<class T >
NDArray<T,2> utl::NDArray< T, 4 >::GetRefSubMatrix ( const int  i,
const int  j 
) const
inline

Definition at line 148 of file utl4thOrderTensor.h.

References utl::NDArrayBase< T, Dim >::GetOffset(), utl::NDArrayBase< T, Dim >::m_Data, utl::NDArrayBase< T, Dim >::m_Shape, and utl::NDArray< T, 2 >::SetData().

Referenced by utl::InnerProduct().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<class T >
bool utl::NDArray< T, 4 >::IsMajorSymmetric ( ) const
inline

Test whether it is major symmetric

Definition at line 188 of file utl4thOrderTensor.h.

References utl::NDArrayBase< T, Dim >::Dimension, utl::IsSame(), utl::NDArrayBase< T, Dim >::m_Shape, and utlException.

+ Here is the call graph for this function:

template<class T >
bool utl::NDArray< T, 4 >::IsMinorSymmetric ( ) const
inline

Definition at line 256 of file utl4thOrderTensor.h.

References utl::NDArrayBase< T, Dim >::Dimension, utl::IsSame(), utl::NDArrayBase< T, Dim >::m_Shape, and utlException.

+ Here is the call graph for this function:

template<class T >
void utl::NDArray< T, 4 >::MajorSymmetrize ( )
inline

Make it major symmetric

Definition at line 160 of file utl4thOrderTensor.h.

References utl::NDArrayBase< T, Dim >::Dimension, utl::NDArrayBase< T, Dim >::m_Shape, and utlException.

template<class T >
void utl::NDArray< T, 4 >::MinorSymmetrize ( )
inline
template<class T >
Reference utl::NDArray< T, 4 >::operator() ( unsigned int  i,
unsigned int  j,
unsigned int  k,
unsigned int  l 
)
inline
template<class T >
ConstReference utl::NDArray< T, 4 >::operator() ( unsigned int  i,
unsigned int  j,
unsigned int  k,
unsigned int  l 
) const
inline
template<class T >
NDArray<T,4>& utl::NDArray< T, 4 >::operator= ( NDArray< T, 4 > &  r)
inline

Definition at line 118 of file utl4thOrderTensor.h.

References utl::NDArrayBase< T, Dim >::operator=().

+ Here is the call graph for this function:

template<class T >
NDArray<T,4>& utl::NDArray< T, 4 >::operator= ( NDArray< T, 4 > &&  r)
inline

Definition at line 124 of file utl4thOrderTensor.h.

References utl::NDArrayBase< T, Dim >::Clear(), and utl::NDArrayBase< T, Dim >::Swap().

+ Here is the call graph for this function:

template<class T >
bool utl::NDArray< T, 4 >::ReSize ( const SizeType  s0,
const SizeType  s1,
const SizeType  s2,
const SizeType  s3 
)
inline

Definition at line 141 of file utl4thOrderTensor.h.

References utl::NDArrayBase< T, Dim >::ReSize().

Referenced by utl::Convert2To4Tensor(), and utl::OuterProduct().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:


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