ARTS  2.2.66
MatrixView Class Reference

The MatrixView class. More...

#include <matpackI.h>

Inheritance diagram for MatrixView:
ConstMatrixView Matrix

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...
 
Numeric get (Index r, Index c) const
 Get element implementation without assertions. 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...
 
Numericoperator() (Index r, Index c)
 Plain index operator. More...
 
Numericget (Index r, Index c)
 Get element implementation without assertions. 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...
 
MatrixViewoperator= (const ConstMatrixView &v)
 Assignment operator. More...
 
MatrixViewoperator= (const MatrixView &v)
 Assignment from MatrixView to MatrixView. More...
 
MatrixViewoperator= (const Matrix &v)
 Assignment from a Matrix. More...
 
MatrixViewoperator= (const ConstVectorView &v)
 Assignment from a vector. More...
 
MatrixViewoperator= (Numeric x)
 Assigning a scalar to a MatrixView will set all elements to this value. More...
 
MatrixViewoperator*= (Numeric x)
 Multiplication by scalar. More...
 
MatrixViewoperator/= (Numeric x)
 Division by scalar. More...
 
MatrixViewoperator+= (Numeric x)
 Addition of scalar. More...
 
MatrixViewoperator-= (Numeric x)
 Subtraction of scalar. More...
 
MatrixViewoperator*= (const ConstMatrixView &x)
 Element-vise multiplication by another Matrix. More...
 
MatrixViewoperator/= (const ConstMatrixView &x)
 Element-vise division by another Matrix. More...
 
MatrixViewoperator+= (const ConstMatrixView &x)
 Element-vise addition of another Matrix. More...
 
MatrixViewoperator-= (const ConstMatrixView &x)
 Element-vise subtraction of another Matrix. More...
 
MatrixViewoperator*= (const ConstVectorView &x)
 Element-vise multiplication by a Vector (acting like a 1-column Matrix). More...
 
MatrixViewoperator/= (const ConstVectorView &x)
 Element-vise division by a Vector (acting like a 1-column Matrix). More...
 
MatrixViewoperator+= (const ConstVectorView &x)
 Element-vise addition of a Vector (acting like a 1-column Matrix). More...
 
MatrixViewoperator-= (const ConstVectorView &x)
 Element-vise subtraction of a Vector (acting like a 1-column Matrix). More...
 
const Numericget_c_array () const
 Conversion to plain C-array. More...
 
Numericget_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...
 
Numeric get (Index r, Index c) const
 Get element implementation without assertions. 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...
 
Numericmdata
 Pointer to the plain C array that holds the data. More...
 

Detailed Description

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 679 of file matpackI.h.

Member Typedef Documentation

◆ iterator

Definition at line 682 of file matpackI.h.

Constructor & Destructor Documentation

◆ ~MatrixView()

virtual MatrixView::~MatrixView ( )
inlinevirtual

Destructor.

Definition at line 758 of file matpackI.h.

◆ MatrixView() [1/3]

MatrixView::MatrixView ( )
protected

Default constructor.

This is necessary, so that we can have a default constructor for the derived class Matrix.

Definition at line 1380 of file matpackI.cc.

Referenced by operator()().

◆ MatrixView() [2/3]

MatrixView::MatrixView ( Numeric data,
const Range rr,
const Range cr 
)
protected

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 1389 of file matpackI.cc.

◆ MatrixView() [3/3]

MatrixView::MatrixView ( Numeric data,
const Range pr,
const Range pc,
const Range nr,
const Range nc 
)
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.

Parameters
*dataThe actual data.
prPrevious range.
pcPrevious range.
nrNew Range.
ncNew Range.

Definition at line 1411 of file matpackI.cc.

Member Function Documentation

◆ begin() [1/2]

Iterator2D MatrixView::begin ( )

Return iterator to first row.

Definition at line 1077 of file matpackI.cc.

References ConstMatrixView::mcr, ConstMatrixView::mdata, ConstMatrixView::mrr, Range::mstart, Range::mstride, and VectorView.

◆ begin() [2/2]

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 1065 of file matpackI.cc.

References ConstMatrixView::begin().

Referenced by copy(), Matrix::Matrix(), mult(), operator*=(), operator+=(), operator-=(), operator/=(), operator=(), Matrix::operator=(), and transform().

◆ end() [1/2]

Iterator2D MatrixView::end ( )

Return iterator behind last row.

Definition at line 1084 of file matpackI.cc.

References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, Range::mstride, and VectorView.

◆ end() [2/2]

ConstIterator2D MatrixView::end ( ) const

Return const iterator behind last row.

Definition at line 1071 of file matpackI.cc.

References ConstMatrixView::end().

Referenced by copy(), Matrix::Matrix(), mult(), operator*=(), operator+=(), operator-=(), operator/=(), operator=(), and Matrix::operator=().

◆ get() [1/2]

Numeric& MatrixView::get ( Index  r,
Index  c 
)
inline

Get element implementation without assertions.

Definition at line 710 of file matpackI.h.

References ConstMatrixView::mcr, ConstMatrixView::mdata, ConstMatrixView::mrr, Range::mstart, and Range::mstride.

◆ get() [2/2]

Numeric MatrixView::get ( Index  r,
Index  c 
) const
inline

Get element implementation without assertions.

Definition at line 691 of file matpackI.h.

References ConstMatrixView::get().

Referenced by interpweights(), and operator()().

◆ get_c_array() [1/2]

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 1229 of file matpackI.cc.

References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, and Range::mstride.

◆ get_c_array() [2/2]

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 1214 of file matpackI.cc.

References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, and Range::mstride.

Referenced by nca_get_data_Matrix(), nca_put_var_Matrix(), nca_read_from_file(), nca_write_to_file(), Reduce(), and test38().

◆ operator()() [1/8]

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 1030 of file matpackI.cc.

References MatrixView(), ConstMatrixView::mcr, ConstMatrixView::mdata, and ConstMatrixView::mrr.

◆ operator()() [2/8]

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 1000 of file matpackI.cc.

References ConstMatrixView::operator()().

◆ operator()() [3/8]

VectorView MatrixView::operator() ( const Range r,
Index  c 
)

Index operator returning a column as an object of type VectorView.

Parameters
rA range of rows.
cIndex of selected column

Definition at line 1039 of file matpackI.cc.

References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, Range::mstride, and VectorView.

◆ operator()() [4/8]

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.

Parameters
rA range of rows.
cIndex of selected column

Definition at line 1011 of file matpackI.cc.

References ConstMatrixView::operator()().

◆ operator()() [5/8]

VectorView MatrixView::operator() ( Index  r,
const Range c 
)

Index operator returning a row as an object of type VectorView.

Parameters
rIndex of selected row.
cRange of columns

Definition at line 1053 of file matpackI.cc.

References ConstMatrixView::mcr, ConstMatrixView::mdata, Range::mextent, ConstMatrixView::mrr, Range::mstart, Range::mstride, and VectorView.

◆ operator()() [6/8]

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.

Parameters
rIndex of selected row.
cRange of columns

Definition at line 1022 of file matpackI.cc.

References ConstMatrixView::operator()().

◆ operator()() [7/8]

Numeric& MatrixView::operator() ( Index  r,
Index  c 
)
inline

Plain index operator.

Definition at line 699 of file matpackI.h.

References get(), ConstMatrixView::mcr, Range::mextent, and ConstMatrixView::mrr.

◆ operator()() [8/8]

Numeric MatrixView::operator() ( Index  r,
Index  c 
) const
inline

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 687 of file matpackI.h.

References ConstMatrixView::operator()().

◆ operator*=() [1/3]

MatrixView & MatrixView::operator*= ( const ConstMatrixView x)

◆ operator*=() [2/3]

MatrixView & MatrixView::operator*= ( const ConstVectorView x)

Element-vise multiplication by a Vector (acting like a 1-column Matrix).

Definition at line 1315 of file matpackI.cc.

References ConstVectorView::begin(), VectorView::begin(), begin(), end(), ConstMatrixView::ncols(), ConstVectorView::nelem(), and ConstMatrixView::nrows().

◆ operator*=() [3/3]

MatrixView & MatrixView::operator*= ( Numeric  x)

Multiplication by scalar.

Definition at line 1157 of file matpackI.cc.

References begin(), and end().

◆ operator+=() [1/3]

MatrixView & MatrixView::operator+= ( const ConstMatrixView x)

◆ operator+=() [2/3]

MatrixView & MatrixView::operator+= ( const ConstVectorView x)

Element-vise addition of a Vector (acting like a 1-column Matrix).

Definition at line 1347 of file matpackI.cc.

References ConstVectorView::begin(), VectorView::begin(), begin(), end(), ConstMatrixView::ncols(), ConstVectorView::nelem(), and ConstMatrixView::nrows().

◆ operator+=() [3/3]

MatrixView & MatrixView::operator+= ( Numeric  x)

Addition of scalar.

Definition at line 1183 of file matpackI.cc.

References begin(), and end().

◆ operator-=() [1/3]

MatrixView & MatrixView::operator-= ( const ConstMatrixView x)

◆ operator-=() [2/3]

MatrixView & MatrixView::operator-= ( const ConstVectorView x)

Element-vise subtraction of a Vector (acting like a 1-column Matrix).

Definition at line 1363 of file matpackI.cc.

References ConstVectorView::begin(), VectorView::begin(), begin(), end(), ConstMatrixView::ncols(), ConstVectorView::nelem(), and ConstMatrixView::nrows().

◆ operator-=() [3/3]

MatrixView & MatrixView::operator-= ( Numeric  x)

Subtraction of scalar.

Definition at line 1196 of file matpackI.cc.

References begin(), and end().

◆ operator/=() [1/3]

MatrixView & MatrixView::operator/= ( const ConstMatrixView x)

◆ operator/=() [2/3]

MatrixView & MatrixView::operator/= ( const ConstVectorView x)

Element-vise division by a Vector (acting like a 1-column Matrix).

Definition at line 1331 of file matpackI.cc.

References ConstVectorView::begin(), VectorView::begin(), begin(), end(), ConstMatrixView::ncols(), ConstVectorView::nelem(), and ConstMatrixView::nrows().

◆ operator/=() [3/3]

MatrixView & MatrixView::operator/= ( Numeric  x)

Division by scalar.

Definition at line 1170 of file matpackI.cc.

References begin(), and end().

◆ operator=() [1/5]

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 1095 of file matpackI.cc.

References ConstMatrixView::begin(), begin(), copy(), ConstMatrixView::end(), ConstMatrixView::mcr, Range::mextent, and ConstMatrixView::mrr.

◆ operator=() [2/5]

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 1137 of file matpackI.cc.

References ConstMatrixView::begin(), begin(), copy(), ConstMatrixView::end(), ConstMatrixView::mcr, Range::mextent, ConstMatrixView::mrr, and ConstVectorView::nelem().

◆ operator=() [3/5]

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 1123 of file matpackI.cc.

References begin(), copy(), end(), ConstMatrixView::mcr, Range::mextent, and ConstMatrixView::mrr.

◆ operator=() [4/5]

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 1110 of file matpackI.cc.

References begin(), copy(), end(), ConstMatrixView::mcr, Range::mextent, and ConstMatrixView::mrr.

◆ operator=() [5/5]

MatrixView & MatrixView::operator= ( Numeric  x)

Assigning a scalar to a MatrixView will set all elements to this value.

Definition at line 1150 of file matpackI.cc.

References begin(), copy(), and end().

Friends And Related Function Documentation

◆ Iterator3D

friend class Iterator3D
friend

Definition at line 762 of file matpackI.h.

◆ Tensor3View

friend class Tensor3View
friend

Definition at line 763 of file matpackI.h.

◆ Tensor4View

friend class Tensor4View
friend

Definition at line 764 of file matpackI.h.

◆ Tensor5View

friend class Tensor5View
friend

Definition at line 765 of file matpackI.h.

◆ Tensor6View

friend class Tensor6View
friend

Definition at line 766 of file matpackI.h.

◆ Tensor7View

friend class Tensor7View
friend

Definition at line 767 of file matpackI.h.

◆ transpose [1/2]

ConstMatrixView transpose ( ConstMatrixView  m)
friend

Const version of transpose.

Definition at line 1799 of file matpackI.cc.

◆ transpose [2/2]

MatrixView transpose ( MatrixView  m)
friend

Returns the transpose.

This creates a special MatrixView for the transpose. The original is not changed!

Definition at line 1806 of file matpackI.cc.

◆ VectorView

friend class VectorView
friend

Definition at line 761 of file matpackI.h.

Referenced by begin(), end(), and operator()().


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