ARTS
2.0.49
|
The MatrixView class. More...
#include <matpackI.h>
Public Types | |
typedef Iterator2D | iterator |
Public Types inherited from ConstMatrixView | |
typedef ConstIterator2D | const_iterator |
Public Member Functions | |
Numeric | operator() (Index r, Index c) const |
Plain const index operator. More... | |
ConstMatrixView | operator() (const Range &r, const Range &c) const |
Const index operator for subrange. More... | |
ConstVectorView | operator() (const Range &r, Index c) const |
Const index operator returning a column as an object of type ConstVectorView. More... | |
ConstVectorView | operator() (Index r, const Range &c) const |
Const index operator returning a row as an object of type ConstVectorView. More... | |
Numeric & | operator() (Index r, Index c) |
Plain index operator. More... | |
MatrixView | operator() (const Range &r, const Range &c) |
Index operator for subrange. More... | |
VectorView | operator() (const Range &r, Index c) |
Index operator returning a column as an object of type VectorView. More... | |
VectorView | operator() (Index r, const Range &c) |
Index operator returning a row as an object of type VectorView. More... | |
ConstIterator2D | begin () const |
Return const iterator to first row. More... | |
ConstIterator2D | end () const |
Return const iterator behind last row. More... | |
Iterator2D | begin () |
Return iterator to first row. More... | |
Iterator2D | end () |
Return iterator behind last row. More... | |
MatrixView & | operator= (const ConstMatrixView &v) |
Assignment operator. More... | |
MatrixView & | operator= (const MatrixView &v) |
Assignment from MatrixView to MatrixView. More... | |
MatrixView & | operator= (const Matrix &v) |
Assignment from a Matrix. More... | |
MatrixView & | operator= (const ConstVectorView &v) |
Assignment from a vector. More... | |
MatrixView & | operator= (Numeric x) |
Assigning a scalar to a MatrixView will set all elements to this value. More... | |
MatrixView & | operator*= (Numeric x) |
Multiplication by scalar. More... | |
MatrixView & | operator/= (Numeric x) |
Division by scalar. More... | |
MatrixView & | operator+= (Numeric x) |
Addition of scalar. More... | |
MatrixView & | operator-= (Numeric x) |
Subtraction of scalar. More... | |
MatrixView & | operator*= (const ConstMatrixView &x) |
Element-vise multiplication by another Matrix. More... | |
MatrixView & | operator/= (const ConstMatrixView &x) |
Element-vise division by another Matrix. More... | |
MatrixView & | operator+= (const ConstMatrixView &x) |
Element-vise addition of another Matrix. More... | |
MatrixView & | operator-= (const ConstMatrixView &x) |
Element-vise subtraction of another Matrix. More... | |
MatrixView & | operator*= (const ConstVectorView &x) |
Element-vise multiplication by a Vector (acting like a 1-column Matrix). More... | |
MatrixView & | operator/= (const ConstVectorView &x) |
Element-vise division by a Vector (acting like a 1-column Matrix). More... | |
MatrixView & | operator+= (const ConstVectorView &x) |
Element-vise addition of a Vector (acting like a 1-column Matrix). More... | |
MatrixView & | operator-= (const ConstVectorView &x) |
Element-vise subtraction of a Vector (acting like a 1-column Matrix). More... | |
const Numeric * | get_c_array () const |
Conversion to plain C-array. More... | |
Numeric * | get_c_array () |
Conversion to plain C-array. More... | |
virtual | ~MatrixView () |
Destructor. More... | |
Public Member Functions inherited from ConstMatrixView | |
Index | nrows () const |
Returns the number of rows. More... | |
Index | ncols () const |
Returns the number of columns. More... | |
Numeric | operator() (Index r, Index c) const |
Plain const index operator. More... | |
ConstMatrixView | operator() (const Range &r, const Range &c) const |
Const index operator for subrange. More... | |
ConstVectorView | operator() (const Range &r, Index c) const |
Const index operator returning a column as an object of type ConstVectorView. More... | |
ConstVectorView | operator() (Index r, const Range &c) const |
Const index operator returning a row as an object of type ConstVectorView. More... | |
ConstIterator2D | begin () const |
Return const iterator to first row. More... | |
ConstIterator2D | end () const |
Return const iterator behind last row. More... | |
virtual | ~ConstMatrixView () |
Destructor. More... | |
Protected Member Functions | |
MatrixView () | |
Default constructor. More... | |
MatrixView (Numeric *data, const Range &r, const Range &c) | |
Explicit constructor. More... | |
MatrixView (Numeric *data, const Range &pr, const Range &pc, const Range &nr, const Range &nc) | |
Recursive constructor. More... | |
Protected Member Functions inherited from ConstMatrixView | |
ConstMatrixView () | |
Default constructor. More... | |
ConstMatrixView (Numeric *data, const Range &r, const Range &c) | |
Explicit constructor. More... | |
ConstMatrixView (Numeric *data, const Range &pr, const Range &pc, const Range &nr, const Range &nc) | |
Recursive constructor. More... | |
Friends | |
class | VectorView |
class | Iterator3D |
class | Tensor3View |
class | Tensor4View |
class | Tensor5View |
class | Tensor6View |
class | Tensor7View |
ConstMatrixView | transpose (ConstMatrixView m) |
Const version of transpose. More... | |
MatrixView | transpose (MatrixView m) |
Returns the transpose. More... | |
Additional Inherited Members | |
Protected Attributes inherited from ConstMatrixView | |
Range | mrr |
The row range of mdata that is actually used. More... | |
Range | mcr |
The column range of mdata that is actually used. More... | |
Numeric * | mdata |
Pointer to the plain C array that holds the data. More... | |
The MatrixView class.
This contains the main implementation of a Matrix. It defines the concepts of MatrixView. Plus additionally the recursive subrange operator, which makes it possible to create a MatrixView from a subrange of a MatrixView.
The class Matrix is just a special case of a MatrixView which also allocates storage.
Definition at line 668 of file matpackI.h.
typedef Iterator2D MatrixView::iterator |
Definition at line 671 of file matpackI.h.
|
inlinevirtual |
Destructor.
Definition at line 737 of file matpackI.h.
|
protected |
Default constructor.
This is necessary, so that we can have a default constructor for the derived class Matrix.
Definition at line 1344 of file matpackI.cc.
Referenced by operator()().
Explicit constructor.
This one is used by Matrix to initialize its own MatrixView part. The row range rr must have a stride to account for the length of one row.
Definition at line 1353 of file matpackI.cc.
|
protected |
Recursive constructor.
This is used to construct SubMatrices from SubMatrices. That means that the new ranges have to be interpreted relative to the original ranges.
The new ranges may contain -1 for the extent which acts as a joker. However, the used Range constructor converts this to an explicit range, consistent with the original Range.
Definition at line 1375 of file matpackI.cc.
Iterator2D MatrixView::begin | ( | ) |
Return iterator to first row.
Definition at line 1041 of file matpackI.cc.
References ConstMatrixView::mcr, ConstMatrixView::mdata, ConstMatrixView::mrr, Range::mstart, Range::mstride, and VectorView.
ConstIterator2D MatrixView::begin | ( | ) | const |
Return const iterator to first row.
Has to be redefined here, since it is hiden by the non-const operator of the derived class.
Definition at line 1029 of file matpackI.cc.
References ConstMatrixView::begin().
Referenced by copy(), Matrix::Matrix(), mult(), operator*=(), operator+=(), operator-=(), operator/=(), operator=(), Matrix::operator=(), and transform().
Iterator2D MatrixView::end | ( | ) |
Return iterator behind last row.
Definition at line 1048 of file matpackI.cc.
References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, Range::mstride, and VectorView.
ConstIterator2D MatrixView::end | ( | ) | const |
Return const iterator behind last row.
Definition at line 1035 of file matpackI.cc.
References ConstMatrixView::end().
Referenced by copy(), Matrix::Matrix(), mult(), operator*=(), operator+=(), operator-=(), operator/=(), Matrix::operator=(), and operator=().
Numeric * MatrixView::get_c_array | ( | ) |
Conversion to plain C-array.
This function returns a pointer to the raw data. It fails if the MatrixView is not pointing to the beginning of a Matrix or the stride is not 1 because the caller expects to get a C array with continuous data.
Definition at line 1193 of file matpackI.cc.
References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, and Range::mstride.
const Numeric * MatrixView::get_c_array | ( | ) | const |
Conversion to plain C-array.
This function returns a pointer to the raw data. It fails if the MatrixView is not pointing to the beginning of a Matrix or the stride is not 1 because the caller expects to get a C array with continuous data.
Definition at line 1178 of file matpackI.cc.
References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, and Range::mstride.
Referenced by test38().
MatrixView MatrixView::operator() | ( | const Range & | r, |
const Range & | c | ||
) |
Index operator for subrange.
We have to also account for the case, that *this is already a subrange of a Matrix. This allows correct recursive behavior.
Definition at line 994 of file matpackI.cc.
References MatrixView(), ConstMatrixView::mcr, ConstMatrixView::mdata, and ConstMatrixView::mrr.
ConstMatrixView MatrixView::operator() | ( | const Range & | r, |
const Range & | c | ||
) | const |
Const index operator for subrange.
We have to also account for the case, that *this is already a subrange of a Matrix. This allows correct recursive behavior. Has to be redefined here, since it is hiden by the non-const operator of the derived class.
Definition at line 964 of file matpackI.cc.
References ConstMatrixView::operator()().
VectorView MatrixView::operator() | ( | const Range & | r, |
Index | c | ||
) |
Index operator returning a column as an object of type VectorView.
r | A range of rows. |
c | Index of selected column |
Definition at line 1003 of file matpackI.cc.
References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, Range::mstride, and VectorView.
ConstVectorView MatrixView::operator() | ( | const Range & | r, |
Index | c | ||
) | const |
Const index operator returning a column as an object of type ConstVectorView.
Has to be redefined here, since it is hiden by the non-const operator of the derived class.
r | A range of rows. |
c | Index of selected column |
Definition at line 975 of file matpackI.cc.
References ConstMatrixView::operator()().
VectorView MatrixView::operator() | ( | Index | r, |
const Range & | c | ||
) |
Index operator returning a row as an object of type VectorView.
r | Index of selected row. |
c | Range of columns |
Definition at line 1017 of file matpackI.cc.
References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, Range::mstride, and VectorView.
ConstVectorView MatrixView::operator() | ( | Index | r, |
const Range & | c | ||
) | const |
Const index operator returning a row as an object of type ConstVectorView.
Has to be redefined here, since it is hiden by the non-const operator of the derived class.
r | Index of selected row. |
c | Range of columns |
Definition at line 986 of file matpackI.cc.
References ConstMatrixView::operator()().
Plain index operator.
Definition at line 684 of file matpackI.h.
References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, and Range::mstride.
Plain const index operator.
Has to be redefined here, since it is hiden by the non-const operator of the derived class.
Definition at line 676 of file matpackI.h.
References ConstMatrixView::operator()().
MatrixView & MatrixView::operator*= | ( | const ConstMatrixView & | x | ) |
Element-vise multiplication by another Matrix.
Definition at line 1203 of file matpackI.cc.
References ConstVectorView::begin(), VectorView::begin(), ConstMatrixView::begin(), begin(), VectorView::end(), end(), ConstMatrixView::ncols(), and ConstMatrixView::nrows().
MatrixView & MatrixView::operator*= | ( | const ConstVectorView & | x | ) |
Element-vise multiplication by a Vector (acting like a 1-column Matrix).
Definition at line 1279 of file matpackI.cc.
References ConstVectorView::begin(), VectorView::begin(), begin(), end(), ConstMatrixView::ncols(), ConstVectorView::nelem(), and ConstMatrixView::nrows().
MatrixView & MatrixView::operator*= | ( | Numeric | x | ) |
Multiplication by scalar.
Definition at line 1121 of file matpackI.cc.
MatrixView & MatrixView::operator+= | ( | const ConstMatrixView & | x | ) |
Element-vise addition of another Matrix.
Definition at line 1241 of file matpackI.cc.
References ConstVectorView::begin(), VectorView::begin(), ConstMatrixView::begin(), begin(), VectorView::end(), end(), ConstMatrixView::ncols(), and ConstMatrixView::nrows().
MatrixView & MatrixView::operator+= | ( | const ConstVectorView & | x | ) |
Element-vise addition of a Vector (acting like a 1-column Matrix).
Definition at line 1311 of file matpackI.cc.
References ConstVectorView::begin(), VectorView::begin(), begin(), end(), ConstMatrixView::ncols(), ConstVectorView::nelem(), and ConstMatrixView::nrows().
MatrixView & MatrixView::operator+= | ( | Numeric | x | ) |
MatrixView & MatrixView::operator-= | ( | const ConstMatrixView & | x | ) |
Element-vise subtraction of another Matrix.
Definition at line 1260 of file matpackI.cc.
References ConstVectorView::begin(), VectorView::begin(), ConstMatrixView::begin(), begin(), VectorView::end(), end(), ConstMatrixView::ncols(), and ConstMatrixView::nrows().
MatrixView & MatrixView::operator-= | ( | const ConstVectorView & | x | ) |
Element-vise subtraction of a Vector (acting like a 1-column Matrix).
Definition at line 1327 of file matpackI.cc.
References ConstVectorView::begin(), VectorView::begin(), begin(), end(), ConstMatrixView::ncols(), ConstVectorView::nelem(), and ConstMatrixView::nrows().
MatrixView & MatrixView::operator-= | ( | Numeric | x | ) |
MatrixView & MatrixView::operator/= | ( | const ConstMatrixView & | x | ) |
Element-vise division by another Matrix.
Definition at line 1222 of file matpackI.cc.
References ConstVectorView::begin(), VectorView::begin(), ConstMatrixView::begin(), begin(), VectorView::end(), end(), ConstMatrixView::ncols(), and ConstMatrixView::nrows().
MatrixView & MatrixView::operator/= | ( | const ConstVectorView & | x | ) |
Element-vise division by a Vector (acting like a 1-column Matrix).
Definition at line 1295 of file matpackI.cc.
References ConstVectorView::begin(), VectorView::begin(), begin(), end(), ConstMatrixView::ncols(), ConstVectorView::nelem(), and ConstMatrixView::nrows().
MatrixView & MatrixView::operator/= | ( | Numeric | x | ) |
MatrixView & MatrixView::operator= | ( | const ConstMatrixView & | m | ) |
Assignment operator.
This copies the data from another MatrixView to this MatrixView. Dimensions must agree! Resizing would destroy the selection that we might have done in this MatrixView by setting its range.
Definition at line 1059 of file matpackI.cc.
References ConstMatrixView::begin(), begin(), copy(), ConstMatrixView::end(), ConstMatrixView::mcr, Range::mextent, and ConstMatrixView::mrr.
MatrixView & MatrixView::operator= | ( | const ConstVectorView & | v | ) |
Assignment from a vector.
This copies the data from a VectorView to this MatrixView. Dimensions must agree! Resizing would destroy the selection that we might have done in this MatrixView by setting its range.
Definition at line 1101 of file matpackI.cc.
References ConstMatrixView::begin(), begin(), copy(), ConstMatrixView::end(), ConstMatrixView::mcr, Range::mextent, ConstMatrixView::mrr, and ConstVectorView::nelem().
MatrixView & MatrixView::operator= | ( | const Matrix & | m | ) |
Assignment from a Matrix.
This must exist to overide the automatically generated assignment operators, which don't copy the contents!
Definition at line 1087 of file matpackI.cc.
References begin(), copy(), end(), ConstMatrixView::mcr, Range::mextent, and ConstMatrixView::mrr.
MatrixView & MatrixView::operator= | ( | const MatrixView & | m | ) |
Assignment from MatrixView to MatrixView.
This is a tricky one. The problem is that since MatrixView is derived from ConstMatrixView, a default = operator is generated by the compiler, which does not do what we want. So we need this one to override the default.
Definition at line 1074 of file matpackI.cc.
References begin(), copy(), end(), ConstMatrixView::mcr, Range::mextent, and ConstMatrixView::mrr.
MatrixView & MatrixView::operator= | ( | Numeric | x | ) |
Assigning a scalar to a MatrixView will set all elements to this value.
Definition at line 1114 of file matpackI.cc.
|
friend |
Definition at line 741 of file matpackI.h.
|
friend |
Definition at line 742 of file matpackI.h.
|
friend |
Definition at line 743 of file matpackI.h.
|
friend |
Definition at line 744 of file matpackI.h.
|
friend |
Definition at line 745 of file matpackI.h.
|
friend |
Definition at line 746 of file matpackI.h.
|
friend |
Const version of transpose.
Definition at line 1689 of file matpackI.cc.
|
friend |
Returns the transpose.
This creates a special MatrixView for the transpose. The original is not changed!
Definition at line 1696 of file matpackI.cc.
|
friend |
Definition at line 740 of file matpackI.h.
Referenced by begin(), end(), and operator()().