Brief description of class still missing. More...
#include <MatrixData.h>
Public Member Functions | |
| T & | at (int row, int col) |
| const T & | at (int row, int col) const |
| int | columnCount () const |
| void | copyAt (int row, int col, const MatrixData< T > &m) |
| const T * | data () const |
| T * | data () |
| void | fill (const T &v) |
| bool | fromString (const StringSection &s) |
| void | identity () |
| MatrixData () | |
| MatrixData (const MatrixData< T > &m) | |
| void | mergeColumn (const MatrixData< T > &col1, const MatrixData< T > &col2) |
| void | mergeRow (const MatrixData< T > &row1, const MatrixData< T > &row2) |
| int | nextNullRow (int startRow) const |
| Matrix< T > | operator* (const MatrixData< T > &m) const |
| Matrix< T > | operator+ (const MatrixData< T > &m) const |
| Matrix< T > | operator- (const MatrixData< T > &m) const |
| void | operator= (const MatrixData< T > &m) |
| bool | operator== (const MatrixData< T > &m) const |
| void | resize (int ndim) |
| void | resize (int nrow, int ncol) |
| 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 |
| void | swapRowColumn () |
| QString | toString () const |
| QString | toUserString (int precision=6, char format='g') const |
| Matrix< T > | transposed () const |
| T * | values () |
| const T * | values () const |
| void | zero () |
| ~MatrixData () | |
Protected Attributes | |
| int | _ncol |
| int | _nrow |
| T * | _values |
Brief description of class still missing.
Full description of class still missing
| QGpCoreTools::MatrixData< T >::MatrixData | ( | ) | [inline] |
| QGpCoreTools::MatrixData< T >::MatrixData | ( | const MatrixData< T > & | m | ) | [inline] |
| QGpCoreTools::MatrixData< T >::~MatrixData | ( | ) | [inline] |
{
delete [] _values;
}
| T & QGpCoreTools::MatrixData< T >::at | ( | int | row, |
| int | col | ||
| ) | [inline] |
| const T & QGpCoreTools::MatrixData< T >::at | ( | int | row, |
| int | col | ||
| ) | const [inline] |
| int QGpCoreTools::MatrixData< T >::columnCount | ( | ) | const [inline] |
References QGpCoreTools::MatrixData< T >::_ncol.
Referenced by QGpCoreTools::MatrixData< T >::copyAt().
{return _ncol;}
| void QGpCoreTools::MatrixData< T >::copyAt | ( | int | row, |
| int | col, | ||
| const MatrixData< T > & | m | ||
| ) |
References QGpCoreTools::MatrixData< T >::_values, QGpCoreTools::MatrixData< T >::columnCount(), and QGpCoreTools::MatrixData< T >::rowCount().
{
ASSERT(row>=0 && row+m.rowCount()<=rowCount());
ASSERT(col>=0 && col+m.columnCount()<=columnCount());
int mrow=m.rowCount();
int length=sizeof(T)*mrow;
T * values=m._values;
T * lastValue=values+mrow*m.columnCount();
T * thisValues=_values+row+col*_nrow;
while(values<lastValue) {
memcpy(thisValues, values, length);
values+=mrow;
thisValues+=_nrow;
}
}
| const T* QGpCoreTools::MatrixData< T >::data | ( | ) | const [inline] |
References QGpCoreTools::MatrixData< T >::_values.
{return _values;}
| T* QGpCoreTools::MatrixData< T >::data | ( | ) | [inline] |
References QGpCoreTools::MatrixData< T >::_values.
{return _values;}
| void QGpCoreTools::MatrixData< T >::fill | ( | const T & | v | ) |
| bool QGpCoreTools::MatrixData< T >::fromString | ( | const StringSection & | s | ) |
References QGpCoreTools::StringSection::nextNumber().
| void QGpCoreTools::MatrixData< T >::identity | ( | ) | [inline] |
| void QGpCoreTools::MatrixData< T >::mergeColumn | ( | const MatrixData< T > & | col1, |
| const MatrixData< T > & | col2 | ||
| ) |
| void QGpCoreTools::MatrixData< T >::mergeRow | ( | const MatrixData< T > & | row1, |
| const MatrixData< T > & | row2 | ||
| ) |
References QGpCoreTools::MatrixData< T >::_ncol, QGpCoreTools::MatrixData< T >::_nrow, and QGpCoreTools::MatrixData< T >::_values.
{
ASSERT(row1._ncol==row2._ncol);
resize(row1._nrow+row2._nrow, row1._ncol);
int length1=sizeof(T)*row1._nrow;
int length2=sizeof(T)*row2._nrow;
T * values=_values;
T * lastValue=_values+_nrow*_ncol;
T * row1Values=row1._values;
T * row2Values=row2._values;
while(values<lastValue) {
memcpy(values, row1Values, length1);
values+=row1._nrow;
row1Values+=row1._nrow;
memcpy(values, row2Values, length2);
values+=row2._nrow;
row2Values+=row2._nrow;
}
}
| int QGpCoreTools::MatrixData< T >::nextNullRow | ( | int | startRow | ) | const |
| Matrix< T > QGpCoreTools::MatrixData< T >::operator* | ( | const MatrixData< T > & | m | ) | const |
References QGpCoreTools::Matrix< T >::_d, QGpCoreTools::MatrixData< T >::_ncol, QGpCoreTools::MatrixData< T >::_nrow, QGpCoreTools::MatrixData< T >::_values, QGpCoreTools::MatrixMultiply::begin(), QGpCoreTools::AbstractNumericalCache::end(), QGpCoreTools::MatrixMultiply::IndexMap::factor1Index(), QGpCoreTools::MatrixMultiply::IndexMap::factor2Index(), QGpCoreTools::MatrixMultiply::indexCount(), QGpCoreTools::MatrixMultiply::indexMap(), QGpCoreTools::MatrixMultiply::isValid(), QGpCoreTools::MatrixMultiply::IndexMap::resultIndex(), and QGpCoreTools::Matrix< T >::zero().
{
ASSERT(_ncol==m._nrow);
Matrix<T> r(_nrow, m._ncol);
r.zero();
T * rValues=r._d->_values;
const T * thisValues=_values;
const T * mValues=m._values;
if(MatrixMultiply::isValid(_nrow, _ncol, m._ncol)) {
const MatrixMultiply& multiplier=*MatrixMultiply::begin(_nrow, _ncol, m._ncol);
int n=multiplier.indexCount();
for(int i=0;i<n;i++) {
const MatrixMultiply::IndexMap& index=multiplier.indexMap(i);
rValues[index.resultIndex()]+=thisValues[index.factor1Index()]*mValues[index.factor2Index()];
}
MatrixMultiply::end(&multiplier);
} else {
// Slower method because cache would be too big for matrix>256*256
for(int i=0; i<_nrow; i++) {
for(int j=0; j<m._ncol; j++) {
int resultIndex=i+j*_nrow;
int mIndex=j*_ncol;
for(int k=0; k<_ncol; k++) {
rValues[resultIndex]+=thisValues[i+k*_nrow]*mValues[k+mIndex];
}
}
}
}
return r;
}
| Matrix< T > QGpCoreTools::MatrixData< T >::operator+ | ( | const MatrixData< T > & | m | ) | const |
| Matrix< T > QGpCoreTools::MatrixData< T >::operator- | ( | const MatrixData< T > & | m | ) | const |
| void QGpCoreTools::MatrixData< T >::operator= | ( | const MatrixData< T > & | m | ) | [inline] |
| bool QGpCoreTools::MatrixData< T >::operator== | ( | const MatrixData< T > & | m | ) | const [inline] |
| void QGpCoreTools::MatrixData< T >::resize | ( | int | ndim | ) | [inline] |
References QGpCoreTools::MatrixData< T >::resize().
Referenced by QGpCoreTools::Matrix< Complex >::Matrix(), QGpCoreTools::MatrixData< T >::MatrixData(), and QGpCoreTools::MatrixData< T >::resize().
{resize(ndim, ndim);}
| void QGpCoreTools::MatrixData< T >::resize | ( | int | nrow, |
| int | ncol | ||
| ) | [inline] |
| int QGpCoreTools::MatrixData< T >::rowCount | ( | ) | const [inline] |
References QGpCoreTools::MatrixData< T >::_nrow.
Referenced by QGpCoreTools::MatrixData< T >::copyAt().
{return _nrow;}
| Matrix< T > QGpCoreTools::MatrixData< T >::sortedColumns | ( | const PermutationVector & | p | ) |
References QGpCoreTools::Matrix< T >::_d, and QGpCoreTools::PermutationVector::newIndex().
| Matrix< T > QGpCoreTools::MatrixData< T >::sortedRows | ( | const PermutationVector & | p | ) |
References QGpCoreTools::Matrix< T >::_d, and QGpCoreTools::PermutationVector::newIndex().
| Matrix< T > QGpCoreTools::MatrixData< T >::subMatrix | ( | int | rowStart, |
| int | colStart, | ||
| int | rowEnd, | ||
| int | colEnd | ||
| ) | const |
References QGpCoreTools::Matrix< T >::_d.
{
ASSERT(rowStart>=0 && rowStart<=rowEnd && rowEnd<_nrow);
ASSERT(colStart>=0 && colStart<=colEnd && colEnd<_ncol);
int mnrow=rowEnd-rowStart+1;
int mncol=colEnd-colStart+1;
Matrix<T> m(mnrow, mncol);
int length=sizeof(T)*mnrow;
T * values=m._d->_values;
T * lastValue=values+mnrow*mncol;
T * thisValues=_values+rowStart+colStart*_nrow;
while(values<lastValue) {
memcpy(values, thisValues, length);
values+=mnrow;
thisValues+=_nrow;
}
return m;
}
| void QGpCoreTools::MatrixData< T >::swapRowColumn | ( | ) | [inline] |
| QString QGpCoreTools::MatrixData< T >::toString | ( | ) | const |
References str, and QGpCoreTools::Number::toString().
| QString QGpCoreTools::MatrixData< T >::toUserString | ( | int | precision = 6, |
| char | format = 'g' |
||
| ) | const |
References str, and QGpCoreTools::Number::toDouble().
{
QString str(" | ");
for(int j=0; j<_ncol; j++) {
str+=QString(" %1 |").arg(j, 12, 10, QChar(' '));
}
str+="\n----|-";
for(int j=0; j<_ncol; j++) {
str+="--------------|";
}
str+="\n";
for(int i=0; i<_nrow; i++) {
str+=QString("%1 | ").arg(i, 3, 10, QChar(' '));
for(int j=0; j<_ncol; j++) {
str+=QString(" %1 |").arg(Number::toDouble(at(i, j)), 12, format, precision, QChar(' '));
}
str+="\n";
}
str+="----|-";
for(int j=0; j<_ncol; j++) {
str+="--------------|";
}
str+="\n";
return str;
}
| Matrix< T > QGpCoreTools::MatrixData< T >::transposed | ( | ) | const |
| T* QGpCoreTools::MatrixData< T >::values | ( | ) | [inline] |
References QGpCoreTools::MatrixData< T >::_values.
{return _values;}
| const T* QGpCoreTools::MatrixData< T >::values | ( | ) | const [inline] |
References QGpCoreTools::MatrixData< T >::_values.
{return _values;}
| void QGpCoreTools::MatrixData< T >::zero | ( | ) | [inline] |
int QGpCoreTools::MatrixData< T >::_ncol [protected] |
Referenced by QGpCoreTools::MatrixData< T >::columnCount(), QGpCoreTools::MatrixData< T >::MatrixData(), QGpCoreTools::MatrixData< T >::mergeColumn(), QGpCoreTools::MatrixData< T >::mergeRow(), QGpCoreTools::MatrixData< T >::operator*(), QGpCoreTools::MatrixData< T >::operator+(), QGpCoreTools::MatrixData< T >::operator-(), QGpCoreTools::MatrixData< T >::operator=(), and QGpCoreTools::MatrixData< T >::operator==().
int QGpCoreTools::MatrixData< T >::_nrow [protected] |
Referenced by QGpCoreTools::MatrixData< T >::MatrixData(), QGpCoreTools::MatrixData< T >::mergeColumn(), QGpCoreTools::MatrixData< T >::mergeRow(), QGpCoreTools::MatrixData< T >::operator*(), QGpCoreTools::MatrixData< T >::operator+(), QGpCoreTools::MatrixData< T >::operator-(), QGpCoreTools::MatrixData< T >::operator=(), QGpCoreTools::MatrixData< T >::operator==(), and QGpCoreTools::MatrixData< T >::rowCount().
T* QGpCoreTools::MatrixData< T >::_values [protected] |
Referenced by QGpCoreTools::MatrixData< T >::copyAt(), QGpCoreTools::MatrixData< T >::data(), QGpCoreTools::MatrixData< T >::MatrixData(), QGpCoreTools::MatrixData< T >::mergeColumn(), QGpCoreTools::MatrixData< T >::mergeRow(), QGpCoreTools::MatrixData< T >::operator*(), QGpCoreTools::MatrixData< T >::operator+(), QGpCoreTools::MatrixData< T >::operator-(), QGpCoreTools::MatrixData< T >::operator=(), QGpCoreTools::MatrixData< T >::operator==(), and QGpCoreTools::MatrixData< T >::values().