MaskArrMath.h

Classes

Global Functions -- (full description)

(source)

Interface

const MaskedArray<T> & operator+= (const MaskedArray<T> &left, const Array<T> &other)
const MaskedArray<T> & operator-= (const MaskedArray<T> &left, const Array<T> &other)
const MaskedArray<T> & operator*= (const MaskedArray<T> &left, const Array<T> &other)
const MaskedArray<T> & operator/= (const MaskedArray<T> &left, const Array<T> &other)
Array<T> & operator+= (Array<T> &left, const ROMaskedArray<T> &other)
Array<T> & operator-= (Array<T> &left, const ROMaskedArray<T> &other)
Array<T> & operator*= (Array<T> &left, const ROMaskedArray<T> &other)
Array<T> & operator/= (Array<T> &left, const ROMaskedArray<T> &other)
const MaskedArray<T> & operator+= (const MaskedArray<T> &left, const ROMaskedArray<T> &other)
const MaskedArray<T> & operator-= (const MaskedArray<T> &left, const ROMaskedArray<T> &other)
const MaskedArray<T> & operator*= (const MaskedArray<T> &left, const ROMaskedArray<T> &other)
const MaskedArray<T> & operator/= (const MaskedArray<T> &left, const ROMaskedArray<T> &other)
const MaskedArray<T> & operator+= (const MaskedArray<T> &left, const T &other)
const MaskedArray<T> & operator-= (const MaskedArray<T> &left, const T &other)
const MaskedArray<T> & operator*= (const MaskedArray<T> &left, const T &other)
const MaskedArray<T> & operator/= (const MaskedArray<T> &left, const T &other)
MaskedArray<T> operator+(const ROMaskedArray<T> &a)
MaskedArray<T> operator-(const ROMaskedArray<T> &a)
MaskedArray<T> operator+ (const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> operator- (const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> operator* (const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> operator/ (const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> operator+ (const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator- (const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator* (const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator/ (const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator+ (const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator- (const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator* (const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator/ (const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator+ (const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> operator- (const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> operator* (const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> operator/ (const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> operator+ (const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator- (const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator* (const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator/ (const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> sin(const ROMaskedArray<T> &left)
MaskedArray<T> cos(const ROMaskedArray<T> &left)
MaskedArray<T> tan(const ROMaskedArray<T> &left)
MaskedArray<T> asin(const ROMaskedArray<T> &left)
MaskedArray<T> acos(const ROMaskedArray<T> &left)
MaskedArray<T> atan(const ROMaskedArray<T> &left)
MaskedArray<T> sinh(const ROMaskedArray<T> &left)
MaskedArray<T> cosh(const ROMaskedArray<T> &left)
MaskedArray<T> tanh(const ROMaskedArray<T> &left)
MaskedArray<T> exp(const ROMaskedArray<T> &left)
MaskedArray<T> log(const ROMaskedArray<T> &left)
MaskedArray<T> log10(const ROMaskedArray<T> &left)
MaskedArray<T> sqrt(const ROMaskedArray<T> &left)
MaskedArray<T> abs(const ROMaskedArray<T> &left)
MaskedArray<T> fabs(const ROMaskedArray<T> &left)
MaskedArray<T> ceil(const ROMaskedArray<T> &left)
MaskedArray<T> floor(const ROMaskedArray<T> &left)
MaskedArray<T> atan2(const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> fmod(const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> atan2(const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> fmod(const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> atan2(const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> fmod(const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> atan2(const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> fmod(const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> atan2(const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> fmod(const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> pow(const ROMaskedArray<T> &left, const RO<U> &right)
MaskedArray<T> pow(const Array<T> &left, const ROMaskedArray<U> &right)
MaskedArray<T> pow(const ROMaskedArray<T> &left, const ROMaskedArray<U> &right)
MaskedArray<T> pow(const ROMaskedArray<T> &left, const Double right)
void minMax(T &minVal, T &maxVal, IPosition &minPos, IPosition &maxPos, const IPosition<T> &marray)
void minMax(T &minVal, T &maxVal, const ROMaskedArray<T> &marray)
T min(const ROMaskedArray<T> &left)
MaskedArray<T> min(const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> min(const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> min(const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> min(const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> min(const ROMaskedArray<T> &left, const T &right)
void min(const MaskedArray<T> &result, const Array<T> &left, const Array<T> &right)
T max(const ROMaskedArray<T> &left)
MaskedArray<T> max(const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> max(const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> max(const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> max(const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> max(const ROMaskedArray<T> &left, const T &right)
void max(const MaskedArray<T> &result, const Array<T> &left, const Array<T> &right)
void indgen(const MaskedArray<T> &a, const T start, const T inc)
void indgen(const MaskedArray<T> &a)
void indgen(const MaskedArray<T> &a, const T start)
T sum(const ROMaskedArray<T> &a)
T sumsquares(const ROMaskedArray<T> &a)
T product(const ROMaskedArray<T> &a)
T mean(const ROMaskedArray<T> &a)
T variance(const ROMaskedArray<T> &a)
T variance(const ROMaskedArray<T> &a, T mean)
T stddev(const ROMaskedArray<T> &a)
T stddev(const ROMaskedArray<T> &a, T mean)
T avdev(const ROMaskedArray<T> &a)
T avdev(const ROMaskedArray<T> &a,T mean)
T median(const ROMaskedArray<T> &a, Bool sorted)
T median(const ROMaskedArray<T> &a)
MaskedArray<T> square(const ROMaskedArray<T> &val)
MaskedArray<T> cube(const ROMaskedArray<T> &val)

Description

Dummy function to simulate section introduction documentation.

Prerequisite

Etymology

MaskArrMath is short for MaskedArrayMath, which is too long by AIPS++ file naming conventions. This file contains global functions which perform element by element mathematical operations on masked arrays.

Synopsis

These functions perform element by element mathematical operations on masked arrays. With two arrays, they must both conform, and the result is done element by element, for those locations where the mask of the MaskedArray is True. For two MaskedArrays, the "and" of the masks is used.

Example

   Vector<Int> a(10);
   Vector<Int> b(10);
   Vector<Int> c(10);
      . . .
   c = a(a>0) + b(b>0);
This example sets those elements of c where ((a>0) && (b>0)) to (a+b). Elements of c where !((a>0) && (b>0)) are unchanged. The result of this operation is a MaskedArray. The assignment from this MaskedArray to the Vector c only assigns those elements where the mask is True.

Example

   Vector<Double> a(10);
   Vector<Double> b(10);
   Vector<Double> c(10);
      . . .
   c = atan2 (a, b(b>0);
This example sets those elements of c where (b>0) to atan2 (a,b). Elements of c where !(b>0) are unchanged. The result of this operation is a MaskedArray. The assignment from this MaskedArray to the Vector c only assigns those elements where the mask is True.

Example

   Vector<Int> a(10);
   Int result;
      . . .
   result = sum (a(a>0));
This example sums a, for those elements of a which are greater than 0.

Motivation

One wants to be able to mask arrays and perform mathematical operations on those masked arrays. Since the masked arrays are only defined where the masks are True, the result must be a MaskedArray, or a simple number.

Member Description

const MaskedArray<T> & operator+= (const MaskedArray<T> &left, const Array<T> &other)
const MaskedArray<T> & operator-= (const MaskedArray<T> &left, const Array<T> &other)
const MaskedArray<T> & operator*= (const MaskedArray<T> &left, const Array<T> &other)
const MaskedArray<T> & operator/= (const MaskedArray<T> &left, const Array<T> &other)
Array<T> & operator+= (Array<T> &left, const ROMaskedArray<T> &other)
Array<T> & operator-= (Array<T> &left, const ROMaskedArray<T> &other)
Array<T> & operator*= (Array<T> &left, const ROMaskedArray<T> &other)
Array<T> & operator/= (Array<T> &left, const ROMaskedArray<T> &other)
const MaskedArray<T> & operator+= (const MaskedArray<T> &left, const ROMaskedArray<T> &other)
const MaskedArray<T> & operator-= (const MaskedArray<T> &left, const ROMaskedArray<T> &other)
const MaskedArray<T> & operator*= (const MaskedArray<T> &left, const ROMaskedArray<T> &other)
const MaskedArray<T> & operator/= (const MaskedArray<T> &left, const ROMaskedArray<T> &other)

Element by element arithmetic modifying left in-place. left and other must be conformant.

Thrown Exceptions

const MaskedArray<T> & operator+= (const MaskedArray<T> &left, const T &other)
const MaskedArray<T> & operator-= (const MaskedArray<T> &left, const T &other)
const MaskedArray<T> & operator*= (const MaskedArray<T> &left, const T &other)
const MaskedArray<T> & operator/= (const MaskedArray<T> &left, const T &other)

Element by element arithmetic modifying left in-place. The scalar "other" behaves as if it were a conformant Array to left filled with constant values.

MaskedArray<T> operator+(const ROMaskedArray<T> &a)
MaskedArray<T> operator-(const ROMaskedArray<T> &a)

Unary arithmetic operation.

MaskedArray<T> operator+ (const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> operator- (const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> operator* (const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> operator/ (const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> operator+ (const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator- (const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator* (const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator/ (const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator+ (const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator- (const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator* (const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator/ (const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)

Element by element arithmetic on MaskedArrays, returning a MaskedArray.

Thrown Exceptions

MaskedArray<T> operator+ (const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> operator- (const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> operator* (const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> operator/ (const ROMaskedArray<T> &left, const T &right)

Element by element arithmetic between a MaskedArray and a scalar, returning a MaskedArray.

MaskedArray<T> operator+ (const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator- (const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator* (const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> operator/ (const T &left, const ROMaskedArray<T> &right)

Element by element arithmetic between a scalar and a MaskedArray, returning a MaskedArray.

MaskedArray<T> atan2(const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> fmod(const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> atan2(const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> fmod(const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> atan2(const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> fmod(const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)

Transcendental function applied to the array on an element-by-element basis. Although a template function, this may not make sense for all numeric types.

Thrown Exceptions

MaskedArray<T> pow(const ROMaskedArray<T> &left, const RO<U> &right)
MaskedArray<T> pow(const Array<T> &left, const ROMaskedArray<U> &right)
MaskedArray<T> pow(const ROMaskedArray<T> &left, const ROMaskedArray<U> &right)

Transcendental function applied to the array on an element-by-element basis. Although a template function, this may not make sense for all numeric types.

Thrown Exceptions

MaskedArray<T> sin(const ROMaskedArray<T> &left)
MaskedArray<T> cos(const ROMaskedArray<T> &left)
MaskedArray<T> tan(const ROMaskedArray<T> &left)
MaskedArray<T> asin(const ROMaskedArray<T> &left)
MaskedArray<T> acos(const ROMaskedArray<T> &left)
MaskedArray<T> atan(const ROMaskedArray<T> &left)
MaskedArray<T> sinh(const ROMaskedArray<T> &left)
MaskedArray<T> cosh(const ROMaskedArray<T> &left)
MaskedArray<T> tanh(const ROMaskedArray<T> &left)
MaskedArray<T> exp(const ROMaskedArray<T> &left)
MaskedArray<T> log(const ROMaskedArray<T> &left)
MaskedArray<T> log10(const ROMaskedArray<T> &left)
MaskedArray<T> sqrt(const ROMaskedArray<T> &left)
MaskedArray<T> abs(const ROMaskedArray<T> &left)
MaskedArray<T> fabs(const ROMaskedArray<T> &left)
MaskedArray<T> ceil(const ROMaskedArray<T> &left)
MaskedArray<T> floor(const ROMaskedArray<T> &left)
MaskedArray<T> atan2(const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> fmod(const ROMaskedArray<T> &left, const T &right)
MaskedArray<T> atan2(const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> fmod(const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> pow(const ROMaskedArray<T> &left, const Double right)

Transcendental function applied to the array on an element-by-element basis. Although a template function, this may not make sense for all numeric types.

void minMax(T &minVal, T &maxVal, IPosition &minPos, IPosition &maxPos, const IPosition<T> &marray)
void minMax(T &minVal, T &maxVal, const ROMaskedArray<T> &marray)

Find the minimum and maximum values of a MaskedArray.

MaskedArray<T> min(const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> min(const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> min(const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)

The "min" and "max" functions require that the type "T" have comparison operators.

Return an array that contains the minimum of "left" and "right" at each position.

"left" and "right" must be conformant.

Thrown Exceptions

MaskedArray<T> min(const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> min(const ROMaskedArray<T> &left, const T &right)

The "min" and "max" functions require that the type "T" have comparison operators.

Return an array that contains the minimum of "left" and "right" at each position.

T max(const ROMaskedArray<T> &left)

The "min" and "max" functions require that the type "T" have comparison operators.

The maximum element of the array.

MaskedArray<T> max(const ROMaskedArray<T> &left, const RO<T> &right)
MaskedArray<T> max(const Array<T> &left, const ROMaskedArray<T> &right)
MaskedArray<T> max(const ROMaskedArray<T> &left, const ROMaskedArray<T> &right)

The "min" and "max" functions require that the type "T" have comparison operators.

Return an array that contains the maximum of "left" and "right" at each position.

"left" and "right" must be conformant.

Thrown Exceptions

MaskedArray<T> max(const T &left, const ROMaskedArray<T> &right)
MaskedArray<T> max(const ROMaskedArray<T> &left, const T &right)

The "min" and "max" functions require that the type "T" have comparison operators.

Return an array that contains the maximum of "left" and "right" at each position.

T min(const ROMaskedArray<T> &left)
void min(const MaskedArray<T> &result, const Array<T> &left, const Array<T> &right)
void max(const MaskedArray<T> &result, const Array<T> &left, const Array<T> &right)

The "min" and "max" functions require that the type "T" have comparison operators.

void indgen(const MaskedArray<T> &a, const T start, const T inc)

Fills all elements of "array" where the mask is True with a sequence starting with "start" and incrementing by "inc" for each element where the mask is True. The first axis varies most rapidly.

void indgen(const MaskedArray<T> &a)

Fills all elements of "array" where the mask is True with a sequence starting with 0 and incremented by one for each element where the mask is True. The first axis varies most rapidly.

void indgen(const MaskedArray<T> &a, const T start)

Fills all elements of "array" where the mask is True with a sequence starting with "start" and incremented by one for each element where the mask is True. The first axis varies most rapidly.

T sum(const ROMaskedArray<T> &a)

Thrown Exceptions

Sum of every element of the MaskedArray where the Mask is True.

T sumsquares(const ROMaskedArray<T> &a)

Thrown Exceptions

Sum of the squares of every element of the MaskedArray where the Mask is True.

T product(const ROMaskedArray<T> &a)

Thrown Exceptions

Product of every element of the MaskedArray where the Mask is True. This could of course easily overflow.

T mean(const ROMaskedArray<T> &a)

Thrown Exceptions

The mean of "a" is the sum of all elements of "a" divided by the number of elements of "a".

T variance(const ROMaskedArray<T> &a)

Thrown Exceptions

The variance of "a" is the sum of (a(i) - mean(a))**2/(a.nelements() - 1). N.B. N-1, not N in the denominator).

T variance(const ROMaskedArray<T> &a, T mean)

Thrown Exceptions

The variance of "a" is the sum of (a(i) - mean(a))**2/(a.nelements() - 1). N.B. N-1, not N in the denominator). Rather than using a computed mean, use the supplied value.

T stddev(const ROMaskedArray<T> &a)

Thrown Exceptions

The standard deviation of "a" is the sqare root of its variance.

T stddev(const ROMaskedArray<T> &a, T mean)

Thrown Exceptions

The standard deviation of "a" is the sqare root of its variance. Rather than using a computed mean, use the supplied value.

T avdev(const ROMaskedArray<T> &a)

Thrown Exceptions

The average deviation of "a" is the sum of abs(a(i) - mean(a))/N. (N.B. N, not N-1 in the denominator).

T avdev(const ROMaskedArray<T> &a,T mean)

Thrown Exceptions

The average deviation of "a" is the sum of abs(a(i) - mean(a))/N. (N.B. N, not N-1 in the denominator). Rather than using a computed mean, use the supplied value.

T median(const ROMaskedArray<T> &a, Bool sorted)

Thrown Exceptions

The median of "a" is a((n+1/2)) if a has an odd number of elements, otherwise it is 1/2(a(n/2) + a((n+1)/2)). If "sorted"==True we assume the data is already sorted and we compute the median directly, otherwise we sort it first (there are algorithms which don't require a sort we could implement if necessary).

T median(const ROMaskedArray<T> &a)

Thrown Exceptions

The median of "a" is a((n+1/2)) if a has an odd number of elements, otherwise it is 1/2(a(n/2) + a((n+1)/2)). Assumes that "a" is unsorted.

MaskedArray<T> square(const ROMaskedArray<T> &val)

Returns a MaskedArray where every element is multiplied by itself.

MaskedArray<T> cube(const ROMaskedArray<T> &val)

Returns a MaskedArray where every element is multiplied by itself.


Copyright © 1995 Associated Universities Inc., Washington, D.C.