ARTS  2.2.66
Matrix Class Reference

The Matrix class. More...

#include <matpackI.h>

Inheritance diagram for Matrix:
Collaboration diagram for Matrix:

Public Member Functions

 Matrix ()
 Default constructor. More...
 
 Matrix (Index r, Index c)
 Constructor setting size. More...
 
 Matrix (Index r, Index c, Numeric fill)
 Constructor setting size and filling with constant value. More...
 
 Matrix (const ConstMatrixView &v)
 Copy constructor from MatrixView. More...
 
 Matrix (const Matrix &v)
 Copy constructor from Matrix. More...
 
Matrixoperator= (Matrix x)
 Assignment operator from another matrix. More...
 
Matrixoperator= (Numeric x)
 Assignment operator from scalar. More...
 
Matrixoperator= (const ConstVectorView &v)
 Assignment from a vector. More...
 
void resize (Index r, Index c)
 Resize function. More...
 
virtual ~Matrix ()
 Destructor for Matrix. More...
 
Numericget_raw_data ()
 
- Public Member Functions inherited from MatrixView
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...
 

Friends

void swap (Matrix &m1, Matrix &m2)
 Swaps two objects. More...
 

Additional Inherited Members

- Public Types inherited from MatrixView
typedef Iterator2D iterator
 
- Public Types inherited from ConstMatrixView
typedef ConstIterator2D const_iterator
 
- Protected Member Functions inherited from MatrixView
 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...
 
- 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 Matrix class.

This is a MatrixView that also allocates storage automatically, and deallocates it when it is destroyed. We take all the functionality from MatrixView. Additionally defined here are:

  1. Constructors and destructor.
  2. Assignment operator from scalar.
  3. Resize function.

Definition at line 788 of file matpackI.h.

Constructor & Destructor Documentation

◆ Matrix() [1/5]

Matrix::Matrix ( )

Default constructor.

Definition at line 1461 of file matpackI.cc.

◆ Matrix() [2/5]

Matrix::Matrix ( Index  r,
Index  c 
)

Constructor setting size.

This constructor has to set the stride in the row range correctly!

Definition at line 1472 of file matpackI.cc.

◆ Matrix() [3/5]

Matrix::Matrix ( Index  r,
Index  c,
Numeric  fill 
)

Constructor setting size and filling with constant value.

Definition at line 1481 of file matpackI.cc.

References ConstMatrixView::mdata.

◆ Matrix() [4/5]

Matrix::Matrix ( const ConstMatrixView m)

Copy constructor from MatrixView.

This automatically sets the size and copies the data.

Definition at line 1495 of file matpackI.cc.

References ConstMatrixView::begin(), MatrixView::begin(), copy(), and ConstMatrixView::end().

◆ Matrix() [5/5]

Matrix::Matrix ( const Matrix m)

Copy constructor from Matrix.

This automatically sets the size and copies the data.

Definition at line 1505 of file matpackI.cc.

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

◆ ~Matrix()

Matrix::~Matrix ( )
virtual

Destructor for Matrix.

This is important, since Matrix uses new to allocate storage.

Definition at line 1612 of file matpackI.cc.

References ConstMatrixView::mdata.

Member Function Documentation

◆ get_raw_data()

Numeric* Matrix::get_raw_data ( )
inline

◆ operator=() [1/3]

Matrix & Matrix::operator= ( Matrix  m)

Assignment operator from another matrix.

While dimensions of MatrixViews can not be adjusted, dimensions of matrices can be adjusted. Hence, the behavior of the assignment operator is different.

In this case the size of the target is automatically adjusted. This is important, so that structures containing matrices are copied correctly.

This is a deviation from the old ARTS paradigm that sizes must match exactly before copying!

Note: It is sufficient to have only this one version of the assignment (Matrix = Matrix). It implicitly covers the cases Matrix=MatrixView, etc, because there is a default constructor for Matrix from MatrixView. (See C++ Primer Plus, page 571ff.)

Parameters
mThe other matrix to assign to this one.
Returns
This matrix, by tradition.
Author
Stefan Buehler
Date
2002-12-19

Definition at line 1542 of file matpackI.cc.

References swap.

◆ operator=() [2/3]

Matrix & Matrix::operator= ( Numeric  x)

Assignment operator from scalar.

Assignment operators also seem to be not inherited.

Definition at line 1550 of file matpackI.cc.

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

◆ operator=() [3/3]

Matrix & Matrix::operator= ( const ConstVectorView v)

Assignment from a vector.

This copies the data from a VectorView to this MatrixView.

The dimension is adjusted automatically.

Parameters
vThe vector to assign to this matrix.
Returns
This matrix, by tradition.
Author
Stefan Buehler
Date
2002-12-19

Definition at line 1569 of file matpackI.cc.

References MatrixView::begin(), copy(), ConstVectorView::nelem(), and resize().

◆ resize()

void Matrix::resize ( Index  r,
Index  c 
)

Resize function.

If the size is already correct this function does nothing. All data is lost after resizing! The new Matrix is not initialized, so it will contain random values.

Definition at line 1580 of file matpackI.cc.

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

Referenced by abs_coefCalcFromXsec(), abs_lookupSetup(), abs_lookupSetupBatch(), abs_lookupSetupWide(), abs_vecInit(), AbsInputFromRteScalars(), GasAbsLookup::Adapt(), ampmat_to_phamat(), AntennaConstantGaussian1D(), AntennaMultiBeamsToPencilBeams(), Append(), cloudboxOff(), complex_n_water_liebe93(), GasAbsLookup::Extract(), get_ppath_atmvars(), get_ppath_blackrad(), get_ppath_ext(), get_ppath_f(), get_refr_index_2d(), get_refr_index_3d(), GriddedFieldPRegridHelper(), GriddedFieldZToPRegridHelper(), integrate_phamat_alpha10(), integrate_phamat_alpha6(), integrate_phamat_theta0_phi10(), integrate_phamat_theta0_phi_alpha6(), interp_atmfield_gp2itw(), interp_atmsurface_gp2itw(), iy_interp_cloudbox_field(), iy_transmitterMultiplePol(), iy_transmitterSinglePol(), iyCloudRadar(), iyInterpCloudboxField2(), iyLoopFrequencies(), iyMC(), iyRadioLink(), Matrix1ColFromVector(), Matrix1RowFromVector(), Matrix2ColFromVectors(), Matrix2RowFromVectors(), Matrix3ColFromVectors(), Matrix3RowFromVectors(), MatrixAddScalar(), MatrixCBR(), MatrixExtractFromTensor3(), MatrixMatrixMultiply(), MatrixPlanck(), MatrixScale(), MatrixSetConstant(), MatrixUnitIntensity(), nca_get_data_Matrix(), nca_read_from_file(), operator=(), opt_prop_sptFromData(), opt_prop_sum_propmat_clearsky(), ArtsParser::parse_matrix(), particle_massesFromMetaDataAndPart_species(), particle_massesFromMetaDataSingleCategory(), pha_matExtractManually(), ppath_init_structure(), Reduce(), rslope_crossing2d(), rslope_crossing3d(), surfaceBlackbody(), surfaceFlatReflectivity(), surfaceFlatRefractiveIndex(), surfaceFlatScalarReflectivity(), surfaceLambertianSimple(), test29(), test30(), xml_read_from_stream(), ybatchMetProfiles(), ybatchMetProfilesClear(), yCalc(), yCalcAppend(), and za_gridOpt().

Friends And Related Function Documentation

◆ swap

void swap ( Matrix m1,
Matrix m2 
)
friend

Swaps two objects.

Definition at line 1602 of file matpackI.cc.

Referenced by operator=().


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