casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
casacore::Matrix< T > Class Template Reference

A 2-D Specialization of the Array class. More...

#include <HetArrayConvFunc.h>

Inheritance diagram for casacore::Matrix< T >:
casacore::Array< T > casacore::ArrayBase

Public Member Functions

 Matrix ()
 A Matrix of length zero in each dimension; zero origin. More...
 
 Matrix (size_t l1, size_t l2)
 A Matrix with "l1" rows and "l2" columns. More...
 
 Matrix (size_t l1, size_t l2, ArrayInitPolicy initPolicy)
 A Matrix with "l1" rows and "l2" columns. More...
 
 Matrix (size_t l1, size_t l2, const T &initialValue)
 A Matrix with "l1" rows and "l2" columns. More...
 
 Matrix (const IPosition &len)
 A matrix of shape with shape "len". More...
 
 Matrix (const IPosition &len, ArrayInitPolicy initPolicy)
 A matrix of shape with shape "len". More...
 
 Matrix (const IPosition &len, const T &initialValue)
 A matrix of shape with shape "len". More...
 
 Matrix (const Matrix< T > &other)
 The copy constructor uses reference semantics. More...
 
 Matrix (const Array< T > &other)
 Construct a Matrix by reference from "other". More...
 
 Matrix (const IPosition &shape, T *storage, StorageInitPolicy policy=COPY)
 Create an Matrix of a given shape from a pointer. More...
 
 Matrix (const IPosition &shape, T *storage, StorageInitPolicy policy, AbstractAllocator< T > const &allocator)
 Create an Matrix of a given shape from a pointer. More...
 
 Matrix (const IPosition &shape, const T *storage)
 Create an Matrix of a given shape from a pointer. More...
 
virtual ~Matrix ()
 Define a destructor, otherwise the (SUN) compiler makes a static one. More...
 
virtual void assign (const Array< T > &other)
 Assign the other array (which must be dimension 2) to this matrix. More...
 
virtual void reference (const Array< T > &other)
 Make this matrix a reference to other. More...
 
void resize (size_t nx, size_t ny, Bool copyValues=False)
 
void resize (size_t nx, size_t ny, Bool copyValues, ArrayInitPolicy policy)
 
virtual void resize ()
 Make this array a different shape. More...
 
virtual void resize (const IPosition &newShape, Bool copyValues, ArrayInitPolicy policy)
 Resize the array and optionally copy the values. More...
 
Matrix< T > & operator= (const Matrix< T > &other)
 Copy the values from other to this Matrix. More...
 
virtual Array< T > & operator= (const Array< T > &other)
 Copy the values in other to this. More...
 
Array< T > & operator= (const T &val)
 Copy val into every element of this Matrix; i.e. More...
 
Matrix< T > & operator= (const MaskedArray< T > &marray)
 Copy to this those values in marray whose corresponding elements in marray's mask are True. More...
 
T & operator() (const IPosition &i)
 Single-pixel addressing. More...
 
const T & operator() (const IPosition &i) const
 
T & operator() (size_t i1, size_t i2)
 
const T & operator() (size_t i1, size_t i2) const
 
MaskedArray< T > operator() (const LogicalArray &mask) const
 The array is masked by the input LogicalArray. More...
 
MaskedArray< T > operator() (const LogicalArray &mask)
 Return a MaskedArray. More...
 
MaskedArray< T > operator() (const MaskedLogicalArray &mask) const
 The array is masked by the input MaskedLogicalArray. More...
 
MaskedArray< T > operator() (const MaskedLogicalArray &mask)
 Return a MaskedArray. More...
 
Vector< T > row (size_t i)
 Returns a reference to the i'th row. More...
 
const Vector< T > row (size_t i) const
 
Vector< T > column (size_t j)
 Returns a reference to the j'th column. More...
 
const Vector< T > column (size_t j) const
 
Vector< T > diagonal (Int64 n=0)
 Returns a diagonal from the Matrix. More...
 
const Vector< T > diagonal (Int64 n=0) const
 
Matrix< T > operator() (const Slice &sliceX, const Slice &sliceY)
 Take a slice of this matrix. More...
 
const Matrix< T > operator() (const Slice &sliceX, const Slice &sliceY) const
 
Array< T > operator() (const IPosition &blc, const IPosition &trc, const IPosition &incr)
 Slice using IPositions. More...
 
const Array< T > operator() (const IPosition &blc, const IPosition &trc, const IPosition &incr) const
 
Array< T > operator() (const IPosition &blc, const IPosition &trc)
 
const Array< T > operator() (const IPosition &blc, const IPosition &trc) const
 
Array< T > operator() (const Slicer &slicer)
 
const Array< T > operator() (const Slicer &slicer) const
 
const IPositionshape () const
 The length of each axis of the Matrix. More...
 
void shape (Int &s1, Int &s2) const
 
size_t nrow () const
 The number of rows in the Matrix, i.e. More...
 
size_t ncolumn () const
 The number of columns in the Matrix, i.e. More...
 
virtual Bool ok () const
 Checks that the Matrix is consistent (invariants check out). More...
 
- Public Member Functions inherited from casacore::Array< T >
 Array ()
 Result has dimensionality of zero, and nelements is zero. More...
 
 Array (const IPosition &shape)
 Create an array of the given shape, i.e. More...
 
 Array (const IPosition &shape, ArrayInitPolicy initPolicy)
 Create an array of the given shape, i.e. More...
 
 Array (const IPosition &shape, const T &initialValue)
 Create an array of the given shape and initialize it with the initial value. More...
 
 Array (const Array< T > &other)
 After construction, this and other reference the same storage. More...
 
 Array (const IPosition &shape, T *storage, StorageInitPolicy policy=COPY)
 Create an Array of a given shape from a pointer. More...
 
 Array (const IPosition &shape, T *storage, StorageInitPolicy policy, AbstractAllocator< T > const &allocator)
 Create an Array of a given shape from a pointer. More...
 
 Array (const IPosition &shape, const T *storage)
 Create an Array of a given shape from a pointer. More...
 
virtual ~Array ()
 Frees up storage only if this array was the last reference to it. More...
 
virtual CountedPtr< ArrayBasemakeArray () const
 Make an empty array of the same template type. More...
 
virtual void assignBase (const ArrayBase &other, Bool checkType=True)
 Assign the source array to this array. More...
 
void set (const T &value)
 Set every element of the array to "value." Also could use the assignment operator which assigns an array from a scalar. More...
 
void apply (T(*function)(T))
 Apply the function to every element of the array. More...
 
void apply (T(*function)(const T &))
 This version takes a function which takes a const T reference and returns a T. More...
 
void apply (const Functional< T, T > &function)
 This version applies a functional. More...
 
Array< T > & operator= (const T &value)
 Set every element of this array to "value". More...
 
Array< T > & operator= (const MaskedArray< T > &marray)
 Copy to this those values in marray whose corresponding elements in marray's mask are True. More...
 
Array< T > copy (ArrayInitPolicy policy=ArrayInitPolicies::NO_INIT) const
 This makes a copy of the array and returns it. More...
 
void copyMatchingPart (const Array< T > &from)
 This function copies the matching part of from array to this array. More...
 
void unique ()
 This ensures that this array does not reference any other storage. More...
 
template<class U >
void tovector (vector< T, U > &out) const
 Create an STL vector from an Array. More...
 
vector< T > tovector () const
 
Array< T > reform (const IPosition &shape) const
 It is occasionally useful to have an array which access the same storage appear to have a different shape. More...
 
bool reformOrResize (const IPosition &newShape, uInt resizePercentage=0, Bool resizeIfNeeded=True)
 Having an array that can be reused without requiring reallocation can be useful for large arrays. More...
 
bool adjustLastAxis (const IPosition &newShape, uInt resizePercentage=0, bool resizeIfNeeded=True)
 Use this method to extend or reduce the last dimension of an array. More...
 
size_t capacity () const
 Returns the number of elements allocated. More...
 
Array< T > nonDegenerate (uInt startingAxis=0, Bool throwIfError=True) const
 These member functions remove degenerate (ie. More...
 
Array< T > nonDegenerate (const IPosition &ignoreAxes) const
 
void nonDegenerate (const Array< T > &other, uInt startingAxis=0, Bool throwIfError=True)
 
void nonDegenerate (const Array< T > &other, const IPosition &ignoreAxes)
 
void removeDegenerate (uInt startingAxis=0, Bool throwIfError=True)
 Remove degenerate axes from this Array object. More...
 
void removeDegenerate (const IPosition &ignoreAxes)
 
const Array< T > addDegenerate (uInt numAxes) const
 This member function returns an Array reference with the specified number of extra axes, all of length one, appended to the end of the Array. More...
 
Array< T > addDegenerate (uInt numAxes)
 
virtual void resize (const IPosition &newShape, Bool copyValues=False)
 Resize the array and optionally copy the values. More...
 
T & operator() (const IPosition &)
 Access a single element of the array. More...
 
const T & operator() (const IPosition &) const
 
Array< T > operator() (const IPosition &start, const IPosition &end)
 Get a reference to an array section extending from start to end (inclusive). More...
 
const Array< T > operator() (const IPosition &start, const IPosition &end) const
 
Array< T > operator() (const IPosition &start, const IPosition &end, const IPosition &inc)
 Along the ith axis, every inc[i]'th element is chosen. More...
 
const Array< T > operator() (const IPosition &start, const IPosition &end, const IPosition &inc) const
 
Array< T > operator() (const Slicer &)
 Get a reference to an array section using a Slicer. More...
 
const Array< T > operator() (const Slicer &) const
 
virtual CountedPtr< ArrayBasegetSection (const Slicer &) const
 Get a reference to a section of an array. More...
 
Array< T > operator[] (size_t i) const
 Get the subset given by the i-th value of the last axis. More...
 
Array< T > diagonals (uInt firstAxis=0, Int64 diag=0) const
 Get the diagonal of each matrix part in the full array. More...
 
const MaskedArray< T > operator() (const LogicalArray &mask) const
 The array is masked by the input LogicalArray. More...
 
MaskedArray< T > operator() (const LogicalArray &mask)
 
const MaskedArray< T > operator() (const MaskedLogicalArray &mask) const
 The array is masked by the input MaskedLogicalArray. More...
 
MaskedArray< T > operator() (const MaskedLogicalArray &mask)
 
uInt nrefs () const
 The number of references the underlying storage has assigned to it. More...
 
Bool conform (const Array< T > &other) const
 Are the shapes identical? More...
 
Bool conform (const MaskedArray< T > &other) const
 
T * data ()
 Get a pointer to the beginning of the array. More...
 
const T * data () const
 
T * getStorage (Bool &deleteIt)
 Generally use of this should be shunned, except to use a FORTRAN routine or something similar. More...
 
const T * getStorage (Bool &deleteIt) const
 
virtual void * getVStorage (Bool &deleteIt)
 The following functions behave the same as the corresponding getStorage functions in the derived templated Array class. More...
 
virtual const void * getVStorage (Bool &deleteIt) const
 
void putStorage (T *&storage, Bool deleteAndCopy)
 putStorage() is normally called after a call to getStorage() (cf). More...
 
virtual void putVStorage (void *&storage, Bool deleteAndCopy)
 
void freeStorage (const T *&storage, Bool deleteIt) const
 If deleteIt is set, delete "storage". More...
 
void freeVStorage (const void *&storage, Bool deleteIt) const
 
virtual void takeStorage (const IPosition &shape, T *storage, StorageInitPolicy policy=COPY)
 Replace the data values with those in the pointer storage. More...
 
virtual void takeStorage (const IPosition &shape, T *storage, StorageInitPolicy policy, AbstractAllocator< T > const &allocator)
 If policy is COPY, storage of a new copy is allocated by allocator. More...
 
virtual void takeStorage (const IPosition &shape, const T *storage)
 Since the pointer is const, a copy is always taken. More...
 
virtual void takeStorage (const IPosition &shape, const T *storage, AbstractAllocator< T > const &allocator)
 Since the pointer is const, a copy is always taken. More...
 
virtual CountedPtr
< ArrayPositionIterator
makeIterator (uInt byDim) const
 Create an ArrayIterator object of the correct type. More...
 
iterator begin ()
 Get the begin iterator object for any array. More...
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
contiter cbegin ()
 Get the begin iterator object for a contiguous array. More...
 
const_contiter cbegin () const
 
contiter cend ()
 
const_contiter cend () const
 
- Public Member Functions inherited from casacore::ArrayBase
 ArrayBase ()
 
 ArrayBase (const IPosition &shape)
 Create an array of the given shape, i.e. More...
 
 ArrayBase (const ArrayBase &other)
 Copy constructor. More...
 
ArrayBaseoperator= (const ArrayBase &)
 Assignment. More...
 
virtual ~ArrayBase ()
 Destructor. More...
 
uInt ndim () const
 The dimensionality of this array. More...
 
size_t nelements () const
 How many elements does this array have? Product of all axis lengths. More...
 
size_t size () const
 
Bool empty () const
 Is the array empty (i.e. More...
 
Bool contiguousStorage () const
 Are the array data contiguous? If they are not contiguous, getStorage (see below) needs to make a copy. More...
 
const IPositionshape () const
 The length of each axis. More...
 
IPosition endPosition () const
 A convenience function: endPosition(i) = shape(i) - 1; i.e. More...
 
const IPositionsteps () const
 Return steps to be made if stepping one element in a dimension. More...
 
void validateConformance (const ArrayBase &) const
 Various helper functions. More...
 
void validateIndex (const IPosition &) const
 
void validateIndex (uInt index) const
 
void validateIndex (uInt index1, uInt index2) const
 
void validateIndex (uInt index1, uInt index2, uInt index3) const
 

Static Public Member Functions

static Matrix< T > identity (size_t n)
 Create an identity matrix of side length n. More...
 
- Static Public Member Functions inherited from casacore::ArrayBase
static uInt arrayVersion ()
 Array version for major change (used by ArrayIO). More...
 

Protected Member Functions

virtual void preTakeStorage (const IPosition &shape)
 pre/post processing hook of takeStorage() for subclasses. More...
 
virtual void postTakeStorage ()
 
virtual void doNonDegenerate (const Array< T > &other, const IPosition &ignoreAxes)
 Remove the degenerate axes from other and store result in this matrix. More...
 
- Protected Member Functions inherited from casacore::Array< T >
void makeSteps ()
 Fill the steps and the end for a derived class. More...
 
void setEndIter ()
 Set the end iterator. More...
 
- Protected Member Functions inherited from casacore::ArrayBase
void baseCopy (const ArrayBase &that)
 
Bool reformOrResize (const IPosition &newShape, Bool resizeIfNeeded, uInt nReferences, Int64 nElementsAllocated, Bool copyDataIfNeeded, uInt resizePercentage)
 Either reforms the array if size permits or resizes it to the new shape. More...
 
Bool isStorageContiguous () const
 Determine if the storage of a subset is contiguous. More...
 
void checkVectorShape ()
 Check if the shape of a vector is correct. More...
 
void checkMatrixShape ()
 Check if the shape of a matrix is correct. More...
 
void checkCubeShape ()
 Check if the shape of a cube is correct. More...
 
void baseReform (ArrayBase &tmp, const IPosition &shape, Bool strict=True) const
 Reform the array to a shape with the same nr of elements. More...
 
void baseNonDegenerate (const ArrayBase &other, const IPosition &ignoreAxes)
 Remove the degenerate axes from the Array object. More...
 
void baseAddDegenerate (ArrayBase &, uInt numAxes)
 These member functions return an Array reference with the specified number of extra axes, all of length one, appended to the end of the Array. More...
 
size_t makeSubset (ArrayBase &out, const IPosition &b, const IPosition &e, const IPosition &i)
 Make a subset of an array. More...
 
size_t makeDiagonal (uInt firstAxis, Int64 diag)
 Set the length and stride such that the diagonal of the matrices defined by two consecutive axes is formed. More...
 
Bool conform2 (const ArrayBase &other) const
 Are the shapes identical? More...
 
void baseMakeSteps ()
 Make the indexing step sizes. More...
 
void throwNdimVector ()
 Throw expection if vector dimensionality is incorrect. More...
 
Bool copyVectorHelper (const ArrayBase &other)
 Helper function for templated Vector class. More...
 

Private Member Functions

void makeIndexingConstants ()
 Helper fn to calculate the indexing constants. More...
 

Private Attributes

size_t xinc_p
 Cached constants to improve indexing. More...
 
size_t yinc_p
 

Additional Inherited Members

- Public Types inherited from casacore::Array< T >
typedef T value_type
 Define the STL-style iterator functions (only forward iterator). More...
 
typedef IteratorSTL iterator
 
typedef ConstIteratorSTL const_iterator
 
typedef T * contiter
 
typedef const T * const_contiter
 
- Static Protected Member Functions inherited from casacore::Array< T >
static ArrayInitPolicy defaultArrayInitPolicy ()
 
static void copyToContiguousStorage (T *dst, Array< T > const &src, ArrayInitPolicy policy)
 
- Protected Attributes inherited from casacore::Array< T >
CountedPtr< Block< T > > data_p
 Reference counted block that contains the storage. More...
 
T * begin_p
 This pointer is adjusted to point to the first element of the array. More...
 
T * end_p
 The end for an STL-style iteration. More...
 
- Protected Attributes inherited from casacore::ArrayBase
size_t nels_p
 Number of elements in the array. More...
 
uInt ndimen_p
 Dimensionality of the array. More...
 
Bool contiguous_p
 Are the data contiguous? More...
 
IPosition length_p
 Used to hold the shape, increment into the underlying storage and originalLength of the array. More...
 
IPosition inc_p
 
IPosition originalLength_p
 
IPosition steps_p
 Used to hold the step to next element in each dimension. More...
 

Detailed Description

template<class T>
class casacore::Matrix< T >

A 2-D Specialization of the Array class.

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25

Matrix objects are two-dimensional specializations (e.g., more convenient and efficient indexing) of the general Array class. You might also want to look at the Array documentation to see inherited functionality. A tutorial on using the array classes in general is available in the "AIPS++ Programming Manual".

Generally the member functions of Array are also available in Matrix versions which take a pair of integers where the array needs an IPosition. Since the Matrix is two-dimensional, the IPositions are overkill, although you may use those versions if you want to.

Matrix<Int> mi(100,100); // Shape is 100x100
mi.resize(50,50); // Shape now 50x50

Slices may be taken with the Slice class. To take a slice, one "indexes" with one Slice(start, length, inc) for each axis, where end and inc are optional. Additionally, there are row(), column() and diagonal() member functions which return Vector's which refer to the storage back in the Matrix:

Matrix<Float> mf(100, 100);
mf.diagonal() = 1;

Correct indexing order of a matrix is:

Matrix<Int> mi(n1,n2) // [nrow, ncolumn]
for (uInt j=0; j<mi.ncolumn(); j++) {
for (uInt i=0; i<mi.nrow(); i++) {
mi(i,j) = i*j;
}
}

Element-by-element arithmetic and logical operations are available (in aips/ArrayMath.h and aips/ArrayLogical.h). Other Matrix operations (e.g. LU decomposition) are available, and more appear periodically.

As with the Arrays, if the preprocessor symbol AIPS_DEBUG is defined at compile time invariants will be checked on entry to most member functions. Additionally, if AIPS_ARRAY_INDEX_CHECK is defined index operations will be bounds-checked. Neither of these should be defined for production code.

Definition at line 36 of file HetArrayConvFunc.h.

Constructor & Destructor Documentation

template<class T>
casacore::Matrix< T >::Matrix ( )

A Matrix of length zero in each dimension; zero origin.

template<class T>
casacore::Matrix< T >::Matrix ( size_t  l1,
size_t  l2 
)

A Matrix with "l1" rows and "l2" columns.

template<class T>
casacore::Matrix< T >::Matrix ( size_t  l1,
size_t  l2,
ArrayInitPolicy  initPolicy 
)

A Matrix with "l1" rows and "l2" columns.

template<class T>
casacore::Matrix< T >::Matrix ( size_t  l1,
size_t  l2,
const T &  initialValue 
)

A Matrix with "l1" rows and "l2" columns.

Fill it with the initial value.

template<class T>
casacore::Matrix< T >::Matrix ( const IPosition len)

A matrix of shape with shape "len".

template<class T>
casacore::Matrix< T >::Matrix ( const IPosition len,
ArrayInitPolicy  initPolicy 
)

A matrix of shape with shape "len".

template<class T>
casacore::Matrix< T >::Matrix ( const IPosition len,
const T &  initialValue 
)

A matrix of shape with shape "len".

Fill it with the initial value.

template<class T>
casacore::Matrix< T >::Matrix ( const Matrix< T > &  other)

The copy constructor uses reference semantics.

template<class T>
casacore::Matrix< T >::Matrix ( const Array< T > &  other)

Construct a Matrix by reference from "other".

"other must have ndim() of 2 or less.

template<class T>
casacore::Matrix< T >::Matrix ( const IPosition shape,
T *  storage,
StorageInitPolicy  policy = COPY 
)

Create an Matrix of a given shape from a pointer.

template<class T>
casacore::Matrix< T >::Matrix ( const IPosition shape,
T *  storage,
StorageInitPolicy  policy,
AbstractAllocator< T > const &  allocator 
)

Create an Matrix of a given shape from a pointer.

template<class T>
casacore::Matrix< T >::Matrix ( const IPosition shape,
const T *  storage 
)

Create an Matrix of a given shape from a pointer.

Because the pointer is const, a copy is always made.

template<class T>
virtual casacore::Matrix< T >::~Matrix ( )
virtual

Define a destructor, otherwise the (SUN) compiler makes a static one.

Member Function Documentation

template<class T>
virtual void casacore::Matrix< T >::assign ( const Array< T > &  other)
virtual

Assign the other array (which must be dimension 2) to this matrix.

If the shapes mismatch, this array is resized.

Reimplemented from casacore::Array< T >.

Referenced by casa::VisibilityResampler::setFreqMaps(), casa::refim::VisibilityResampler::setFreqMaps(), casa::ConvolutionFunction::setSpwFreqSelection(), and casa::refim::ConvolutionFunction::setSpwFreqSelection().

template<class T>
Vector<T> casacore::Matrix< T >::column ( size_t  j)

Returns a reference to the j'th column.

Referenced by casa::PixelCanvas::drawColoredPoints(), and casa::sdfiller::DataRecord::operator=().

template<class T>
const Vector<T> casacore::Matrix< T >::column ( size_t  j) const
template<class T>
Vector<T> casacore::Matrix< T >::diagonal ( Int64  n = 0)

Returns a diagonal from the Matrix.

The Matrix must be square. n==0 is the main diagonal. n>0 is above the main diagonal, n<0 is below it.

template<class T>
const Vector<T> casacore::Matrix< T >::diagonal ( Int64  n = 0) const
template<class T>
virtual void casacore::Matrix< T >::doNonDegenerate ( const Array< T > &  other,
const IPosition ignoreAxes 
)
protectedvirtual

Remove the degenerate axes from other and store result in this matrix.

An exception is thrown if removing degenerate axes does not result in a matrix.

Reimplemented from casacore::Array< T >.

template<class T>
static Matrix<T> casacore::Matrix< T >::identity ( size_t  n)
static

Create an identity matrix of side length n.

(Could not do this as a constructor because of ambiguities with other constructors).

template<class T>
void casacore::Matrix< T >::makeIndexingConstants ( )
private

Helper fn to calculate the indexing constants.

template<class T>
size_t casacore::Matrix< T >::ncolumn ( ) const
inline
template<class T>
size_t casacore::Matrix< T >::nrow ( ) const
inline
template<class T>
virtual Bool casacore::Matrix< T >::ok ( ) const
virtual

Checks that the Matrix is consistent (invariants check out).

Reimplemented from casacore::Array< T >.

template<class T>
T& casacore::Matrix< T >::operator() ( const IPosition i)
inline

Single-pixel addressing.

If AIPS_ARRAY_INDEX_CHECK is defined, bounds checking is performed.

Definition at line 186 of file Matrix.h.

template<class T>
const T& casacore::Matrix< T >::operator() ( const IPosition i) const
inline

Definition at line 188 of file Matrix.h.

template<class T>
T& casacore::Matrix< T >::operator() ( size_t  i1,
size_t  i2 
)
inline

Definition at line 190 of file Matrix.h.

template<class T>
const T& casacore::Matrix< T >::operator() ( size_t  i1,
size_t  i2 
) const
inline

Definition at line 199 of file Matrix.h.

template<class T>
MaskedArray<T> casacore::Matrix< T >::operator() ( const LogicalArray &  mask) const
inline

The array is masked by the input LogicalArray.

This mask must conform to the array.

Return a MaskedArray.

Definition at line 215 of file Matrix.h.

template<class T>
MaskedArray<T> casacore::Matrix< T >::operator() ( const LogicalArray &  mask)
inline

Return a MaskedArray.

Definition at line 219 of file Matrix.h.

template<class T>
MaskedArray<T> casacore::Matrix< T >::operator() ( const MaskedLogicalArray &  mask) const
inline

The array is masked by the input MaskedLogicalArray.

The mask is effectively the AND of the internal LogicalArray and the internal mask of the MaskedLogicalArray. The MaskedLogicalArray must conform to the array.

Return a MaskedArray.

Definition at line 232 of file Matrix.h.

template<class T>
MaskedArray<T> casacore::Matrix< T >::operator() ( const MaskedLogicalArray &  mask)
inline

Return a MaskedArray.

Definition at line 236 of file Matrix.h.

template<class T>
Matrix<T> casacore::Matrix< T >::operator() ( const Slice sliceX,
const Slice sliceY 
)

Take a slice of this matrix.

Slices are always indexed starting at zero. This uses reference semantics, i.e. changing a value in the slice changes the original.

Matrix<Double> vd(100,100);
//..\.
vd(Slice(0,10),Slice(10,10)) = -1.0; // 10x10 sub-matrix set to -1.0
template<class T>
const Matrix<T> casacore::Matrix< T >::operator() ( const Slice sliceX,
const Slice sliceY 
) const
template<class T>
Array<T> casacore::Matrix< T >::operator() ( const IPosition blc,
const IPosition trc,
const IPosition incr 
)
inline

Slice using IPositions.

Required to be defined, otherwise the base class versions are hidden.

Definition at line 278 of file Matrix.h.

template<class T>
const Array<T> casacore::Matrix< T >::operator() ( const IPosition blc,
const IPosition trc,
const IPosition incr 
) const
inline

Definition at line 281 of file Matrix.h.

template<class T>
Array<T> casacore::Matrix< T >::operator() ( const IPosition blc,
const IPosition trc 
)
inline

Definition at line 284 of file Matrix.h.

template<class T>
const Array<T> casacore::Matrix< T >::operator() ( const IPosition blc,
const IPosition trc 
) const
inline

Definition at line 286 of file Matrix.h.

template<class T>
Array<T> casacore::Matrix< T >::operator() ( const Slicer slicer)
inline

Definition at line 288 of file Matrix.h.

template<class T>
const Array<T> casacore::Matrix< T >::operator() ( const Slicer slicer) const
inline

Definition at line 290 of file Matrix.h.

template<class T>
Matrix<T>& casacore::Matrix< T >::operator= ( const Matrix< T > &  other)

Copy the values from other to this Matrix.

If this matrix has zero elements then it will resize to be the same shape as other; otherwise other must conform to this. Note that the assign function can be used to assign a non-conforming matrix.

template<class T>
virtual Array<T>& casacore::Matrix< T >::operator= ( const Array< T > &  other)
virtual

Copy the values in other to this.

If the array on the left hand side has no elements, then it is resized to be the same size as as the array on the right hand side. Otherwise, the arrays must conform (same shapes).

IPosition shape(2,10,10); // some shape
Array<Double> ad(shape);
//..\.
Array<Double> ad2; // N.B. ad2.nelements() == 0
ad2 = ad; // ad2 resizes, then elements
// are copied.
shape = 20;
Array<Double> ad3(shape);
ad3 = ad; // Error: arrays do not conform

Note that the assign function can be used to assign a non-conforming array.

Reimplemented from casacore::Array< T >.

template<class T>
Array<T>& casacore::Matrix< T >::operator= ( const T &  val)
inline

Copy val into every element of this Matrix; i.e.

behaves as if val were a constant conformant matrix.

Definition at line 174 of file Matrix.h.

template<class T>
Matrix<T>& casacore::Matrix< T >::operator= ( const MaskedArray< T > &  marray)
inline

Copy to this those values in marray whose corresponding elements in marray's mask are True.

Definition at line 179 of file Matrix.h.

template<class T>
virtual void casacore::Matrix< T >::postTakeStorage ( )
protectedvirtual

Reimplemented from casacore::Array< T >.

template<class T>
virtual void casacore::Matrix< T >::preTakeStorage ( const IPosition )
protectedvirtual

pre/post processing hook of takeStorage() for subclasses.

Reimplemented from casacore::Array< T >.

template<class T>
virtual void casacore::Matrix< T >::reference ( const Array< T > &  other)
virtual

Make this matrix a reference to other.

Other must be of dimensionality 2 or less.

Reimplemented from casacore::Array< T >.

Referenced by casa::VBStore::reference(), casa::refim::VBStore::reference(), and casa::vi::FreqAxisTVI::transformFreqAxis().

template<class T>
void casacore::Matrix< T >::resize ( size_t  nx,
size_t  ny,
Bool  copyValues = False 
)
inline
template<class T>
void casacore::Matrix< T >::resize ( size_t  nx,
size_t  ny,
Bool  copyValues,
ArrayInitPolicy  policy 
)
template<class T>
virtual void casacore::Matrix< T >::resize ( )
virtual

Make this array a different shape.

If copyValues==True the old values are copied over to the new array. Copying is done on a per axis basis, thus a subsection with the minimum of the old and new shape is copied.
Resize without argument is equal to resize(IPosition()).
It is important to note that if multiple Array objects reference the same data storage, this Array object still references the same data storage as the other Array objects if the shape does not change. Otherwise this Array object references newly allocated storage, while the other Array objects still reference the existing data storage.
If you want to be sure that the data storage of this Array object is not referenced by other Array objects, the function unique should be called first.

Reimplemented from casacore::Array< T >.

Referenced by casacore::Matrix< casa::VBStore >::resize().

template<class T>
virtual void casacore::Matrix< T >::resize ( const IPosition newShape,
Bool  copyValues,
ArrayInitPolicy  policy 
)
virtual

Resize the array and optionally copy the values.


The default implementation in ArrayBase throws an exception.

Reimplemented from casacore::Array< T >.

template<class T>
Vector<T> casacore::Matrix< T >::row ( size_t  i)

Returns a reference to the i'th row.

Referenced by casa::vi::FreqAxisTVI::transformFreqAxis().

template<class T>
const Vector<T> casacore::Matrix< T >::row ( size_t  i) const
template<class T>
const IPosition& casacore::Matrix< T >::shape ( ) const
inline
template<class T>
void casacore::Matrix< T >::shape ( Int s1,
Int s2 
) const
inline

Definition at line 297 of file Matrix.h.

Member Data Documentation

template<class T>
size_t casacore::Matrix< T >::xinc_p
private

Cached constants to improve indexing.

Definition at line 322 of file Matrix.h.

Referenced by casacore::Matrix< casa::VBStore >::operator()().

template<class T>
size_t casacore::Matrix< T >::yinc_p
private

Definition at line 322 of file Matrix.h.

Referenced by casacore::Matrix< casa::VBStore >::operator()().


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