All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Protected Member Functions | Protected Attributes | Friends
QGpCoreTools::Matrix< T > Class Template Reference

#include <Matrix.h>

List of all members.

Public Member Functions

T & at (int row, int col)
const T & at (int row, int col) const
QVector< T > columnAt (int col) const
int columnCount () const
void copyAt (int row, int col, const Matrix< T > &m)
const T * data () const
T * data ()
void fill (const T &v)
bool fromString (const StringSection &s)
void identity ()
void invert ()
 Matrix ()
 Matrix (int ndim)
 Matrix (int nrow, int ncol)
 Matrix (const Matrix< T > &o)
void mergeColumn (const Matrix< T > &col1, const Matrix< T > &col2)
void mergeRow (const Matrix< T > &row1, const Matrix< T > &row2)
int nextNullRow (int startRow) const
bool operator!= (const Matrix< T > &m) const
Matrix< T > operator* (const Matrix< T > &m) const
void operator*= (const Matrix< T > &m)
Matrix< T > operator+ (const Matrix< T > &m) const
void operator+= (const Matrix< T > &m)
Matrix< T > operator- (const Matrix< T > &m) const
void operator-= (const Matrix< T > &m)
Matrix< T > operator= (const Matrix< T > &m)
bool operator== (const Matrix< T > &m) const
void resize (int ndim)
void resize (int nrow, int ncol)
QVector< T > rowAt (int row) const
int rowCount () const
Matrix< T > sortedColumns (const PermutationVector &p)
Matrix< T > sortedRows (const PermutationVector &p)
Matrix< T > subMatrix (int rowStart, int colStart, int rowEnd, int colEnd) const
QString toString () const
QString toUserString (int precision=6, char format='g') const
void transpose ()
Matrix< T > transposed () const
void zero ()

Protected Member Functions

void swapRowColumn ()

Protected Attributes

QSharedDataPointer< MatrixData
< T > > 
_d

Friends

class MatrixColumnIterator< T >
class MatrixData< T >
class MatrixIterator< T >
class MatrixRowIterator< T >
class MutableMatrixColumnIterator< T >
class MutableMatrixIterator< T >
class MutableMatrixRowIterator< T >

Detailed Description

template<typename T>
class QGpCoreTools::Matrix< T >

Template for implicitely shared matrix compatible with Lapack

LAPACK is assuming matrix stored in column vectors column

For a MxN matrix: a(1,1) ... a(m,1) a(1,2) ... a(m,2) ... a(1,n) ... a(m,n) first column second column last column


Constructor & Destructor Documentation

template<typename T>
QGpCoreTools::Matrix< T >::Matrix ( ) [inline]
template<typename T>
QGpCoreTools::Matrix< T >::Matrix ( int  ndim) [inline]
{_d=new MatrixData<T>; _d->resize(ndim);}
template<typename T>
QGpCoreTools::Matrix< T >::Matrix ( int  nrow,
int  ncol 
) [inline]
{_d=new MatrixData<T>; _d->resize(nrow, ncol);}
template<typename T>
QGpCoreTools::Matrix< T >::Matrix ( const Matrix< T > &  o) [inline]
: _d(o._d) {}

Member Function Documentation

template<typename T>
T& QGpCoreTools::Matrix< T >::at ( int  row,
int  col 
) [inline]
template<typename T>
const T& QGpCoreTools::Matrix< T >::at ( int  row,
int  col 
) const [inline]
{return _d->at(row,col);}
template<typename T >
QVector< T > QGpCoreTools::Matrix< T >::columnAt ( int  col) const

Returns column col as a QVector.

References QGpCoreTools::MatrixIterator< T >::hasNext(), and QGpCoreTools::MatrixIterator< T >::next().

Referenced by QGpCoreTools::Covariance::stddev2D().

  {
    QVector<T> r(rowCount());
    MatrixColumnIterator<T> it(*this, col);
    int i=0;
    while(it.hasNext()) {
      r[i++]=*it.next();
    }
    return r;
  }
template<typename T>
int QGpCoreTools::Matrix< T >::columnCount ( ) const [inline]
template<typename T>
void QGpCoreTools::Matrix< T >::copyAt ( int  row,
int  col,
const Matrix< T > &  m 
) [inline]
{_d->copyAt(row, col, *m._d);}
template<typename T>
const T* QGpCoreTools::Matrix< T >::data ( ) const [inline]
template<typename T>
T* QGpCoreTools::Matrix< T >::data ( ) [inline]
{return _d->data();}
template<typename T>
void QGpCoreTools::Matrix< T >::fill ( const T &  v) [inline]
{_d->fill(v);}
template<typename T>
bool QGpCoreTools::Matrix< T >::fromString ( const StringSection s) [inline]
{return _d->fromString(s);}
template<typename T>
void QGpCoreTools::Matrix< T >::identity ( ) [inline]

Referenced by GeopsyCore::RotateParameters::matrix().

{_d->identity();}
template<typename T>
void QGpCoreTools::Matrix< T >::invert ( ) [inline]

Reimplemented in QGpCoreTools::DoubleMatrix.

{_d->invert();}
template<typename T>
void QGpCoreTools::Matrix< T >::mergeColumn ( const Matrix< T > &  col1,
const Matrix< T > &  col2 
) [inline]
{_d->mergeColumn(*col1._d, *col2._d);}
template<typename T>
void QGpCoreTools::Matrix< T >::mergeRow ( const Matrix< T > &  row1,
const Matrix< T > &  row2 
) [inline]
{_d->mergeRow(*row1._d, *row2._d);}
template<typename T>
int QGpCoreTools::Matrix< T >::nextNullRow ( int  startRow) const [inline]
{return _d->nextNullRow(startRow);}
template<typename T>
bool QGpCoreTools::Matrix< T >::operator!= ( const Matrix< T > &  m) const [inline]
{return !_d->operator==(*m._d);}
template<typename T>
Matrix<T> QGpCoreTools::Matrix< T >::operator* ( const Matrix< T > &  m) const [inline]
{return _d->operator*(*m._d);}
template<typename T>
void QGpCoreTools::Matrix< T >::operator*= ( const Matrix< T > &  m) [inline]

References QGpCoreTools::Matrix< T >::_d.

  {
    *this=_d->operator*( *m._d);
  }
template<typename T>
Matrix<T> QGpCoreTools::Matrix< T >::operator+ ( const Matrix< T > &  m) const [inline]
{return _d->operator+(*m._d);}
template<typename T>
void QGpCoreTools::Matrix< T >::operator+= ( const Matrix< T > &  m) [inline]

References QGpCoreTools::Matrix< T >::_d.

  {
    *this=_d->operator+( *m._d);
  }
template<typename T>
Matrix<T> QGpCoreTools::Matrix< T >::operator- ( const Matrix< T > &  m) const [inline]
{return _d->operator-(*m._d);}
template<typename T>
void QGpCoreTools::Matrix< T >::operator-= ( const Matrix< T > &  m) [inline]

References QGpCoreTools::Matrix< T >::_d.

  {
    *this=_d->operator-( *m._d);
  }
template<typename T>
Matrix<T> QGpCoreTools::Matrix< T >::operator= ( const Matrix< T > &  m) [inline]
{_d=m._d; return *this;}
template<typename T>
bool QGpCoreTools::Matrix< T >::operator== ( const Matrix< T > &  m) const [inline]
{return _d->operator==(*m._d);}
template<typename T>
void QGpCoreTools::Matrix< T >::resize ( int  ndim) [inline]

Referenced by QGpCoreTools::operator>>().

{_d->resize(ndim);}
template<typename T>
void QGpCoreTools::Matrix< T >::resize ( int  nrow,
int  ncol 
) [inline]
{_d->resize(nrow, ncol);}
template<typename T >
QVector< T > QGpCoreTools::Matrix< T >::rowAt ( int  row) const

Returns row row as a QVector.

References QGpCoreTools::MatrixIterator< T >::hasNext(), and QGpCoreTools::MatrixIterator< T >::next().

  {
    QVector<T> r(columnCount());
    MatrixColumnIterator<T> it(*this, row);
    int i=0;
    while(it.hasNext()) {
      r[i++]=*it.next();
    }
    return r;
  }
template<typename T>
int QGpCoreTools::Matrix< T >::rowCount ( ) const [inline]
template<typename T>
Matrix<T> QGpCoreTools::Matrix< T >::sortedColumns ( const PermutationVector p) [inline]

Referenced by QGpCoreTools::Matrix< Complex >::sortedColumns().

{return _d->sortedColumns(p);}
template<typename T>
Matrix<T> QGpCoreTools::Matrix< T >::sortedRows ( const PermutationVector p) [inline]

Referenced by QGpCoreTools::Matrix< Complex >::sortedRows().

{return _d->sortedRows(p);}
template<typename T>
Matrix<T> QGpCoreTools::Matrix< T >::subMatrix ( int  rowStart,
int  colStart,
int  rowEnd,
int  colEnd 
) const [inline]

Referenced by QGpCoreTools::Matrix< Complex >::subMatrix().

{return _d->subMatrix(rowStart, colStart, rowEnd, colEnd);}
template<typename T>
void QGpCoreTools::Matrix< T >::swapRowColumn ( ) [inline, protected]
{_d->swapRowColumn();}
template<typename T>
QString QGpCoreTools::Matrix< T >::toString ( ) const [inline]
{return _d->toString();}
template<typename T>
QString QGpCoreTools::Matrix< T >::toUserString ( int  precision = 6,
char  format = 'g' 
) const [inline]
{return _d->toUserString(precision, format);}
template<typename T>
void QGpCoreTools::Matrix< T >::transpose ( ) [inline]
{ *this=transposed();}
template<typename T>
Matrix<T> QGpCoreTools::Matrix< T >::transposed ( ) const [inline]

Referenced by QGpCoreTools::Matrix< Complex >::transposed().

{return _d->transposed();}
template<typename T>
void QGpCoreTools::Matrix< T >::zero ( ) [inline]

Friends And Related Function Documentation

template<typename T>
friend class MatrixColumnIterator< T > [friend]
template<typename T>
friend class MatrixData< T > [friend]
template<typename T>
friend class MatrixIterator< T > [friend]
template<typename T>
friend class MatrixRowIterator< T > [friend]
template<typename T>
friend class MutableMatrixColumnIterator< T > [friend]
template<typename T>
friend class MutableMatrixIterator< T > [friend]
template<typename T>
friend class MutableMatrixRowIterator< T > [friend]

Member Data Documentation

template<typename T>
QSharedDataPointer< MatrixData<T> > QGpCoreTools::Matrix< T >::_d [protected]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines