VectorBase< ELT > Class Template Reference

This is a dataless rehash of the MatrixBase class to specialize it for Vectors. More...

#include <BigMatrix.h>

Inheritance diagram for VectorBase< ELT >:
MatrixBase< ELT > Vector_< ELT > VectorView_< ELT >

List of all members.

Classes

struct  EltResult

Public Member Functions

VectorBaseoperator= (const VectorBase &b)
 Copy assignment is deep copy but behavior depends on type of lhs: if view, rhs must match.
VectorBaseoperator*= (const StdNumber &t)
VectorBaseoperator/= (const StdNumber &t)
VectorBaseoperator+= (const VectorBase &r)
VectorBaseoperator-= (const VectorBase &r)
template<class EE >
VectorBaseoperator= (const VectorBase< EE > &b)
template<class EE >
VectorBaseoperator+= (const VectorBase< EE > &b)
template<class EE >
VectorBaseoperator-= (const VectorBase< EE > &b)
VectorBaseoperator= (const ELT &t)
 Fill current allocation with copies of element.
template<class EE >
VectorBaserowScaleInPlace (const VectorBase< EE > &v)
 There's only one column here so it's a bit wierd to use rowScale rather than elementwiseMultiply, but there's nothing really wrong with it.
template<class EE >
void rowScale (const VectorBase< EE > &v, typename EltResult< EE >::Mul &out) const
template<class EE >
EltResult< EE >::Mul rowScale (const VectorBase< EE > &v) const
VectorBaseelementwiseInvertInPlace ()
 Set this[i] = this[i]^-1.
void elementwiseInvert (VectorBase< typename CNT< ELT >::TInvert > &out) const
 Set supplied out[i] = this[i]^-1.
VectorBase< typename CNT< ELT >
::TInvert
elementwiseInvert () const
 Return out[i]=this[i]^-1 as function return.
template<class EE >
VectorBaseelementwiseMultiplyInPlace (const VectorBase< EE > &r)
 M(i,j) *= R(i,j); R must have same dimensions as this.
template<class EE >
void elementwiseMultiply (const VectorBase< EE > &v, typename EltResult< EE >::Mul &out) const
template<class EE >
EltResult< EE >::Mul elementwiseMultiply (const VectorBase< EE > &v) const
template<class EE >
VectorBaseelementwiseMultiplyFromLeftInPlace (const VectorBase< EE > &r)
 M(i,j) = R(i,j) * M(i,j); R must have same dimensions as this.
template<class EE >
void elementwiseMultiplyFromLeft (const VectorBase< EE > &v, typename VectorBase< EE >::template EltResult< ELT >::Mul &out) const
template<class EE >
VectorBase< EE >::template
EltResult< ELT >::Mul 
elementwiseMultiplyFromLeft (const VectorBase< EE > &v) const
template<class EE >
VectorBaseelementwiseDivideInPlace (const VectorBase< EE > &r)
 M(i,j) /= R(i,j); R must have same dimensions as this.
template<class EE >
void elementwiseDivide (const VectorBase< EE > &v, typename EltResult< EE >::Dvd &out) const
template<class EE >
EltResult< EE >::Dvd elementwiseDivide (const VectorBase< EE > &v) const
template<class EE >
VectorBaseelementwiseDivideFromLeftInPlace (const VectorBase< EE > &r)
 M(i,j) = R(i,j) / M(i,j); R must have same dimensions as this.
template<class EE >
void elementwiseDivideFromLeft (const VectorBase< EE > &v, typename VectorBase< EE >::template EltResult< ELT >::Dvd &out) const
template<class EE >
VectorBase< EE >::template
EltResult< ELT >::Dvd 
elementwiseDivideFromLeft (const VectorBase< EE > &v) const
 operator const Vector_< ELT > & () const
 operator Vector_< ELT > & ()
 operator const VectorView_< ELT > & () const
 operator VectorView_< ELT > & ()
 operator const Matrix_< ELT > & () const
 operator Matrix_< ELT > & ()
 operator const MatrixView_< ELT > & () const
 operator MatrixView_< ELT > & ()
int size () const
int nrow () const
 Return the number of rows m in the logical shape of this matrix.
int ncol () const
 Return the number of columns n in the logical shape of this matrix.
ptrdiff_t nelt () const
 Return the number of elements in the logical shape of this matrix.
TAbs abs () const
 abs() with the result as a function return.
const ELT & operator[] (int i) const
ELT & operator[] (int i)
const ELT & operator() (int i) const
ELT & operator() (int i)
VectorView_< ELT > operator() (int i, int m) const
VectorView_< ELT > operator() (int i, int m)
VectorView_< ELT > index (const std::vector< int > &indices) const
VectorView_< ELT > updIndex (const std::vector< int > &indices)
VectorView_< ELT > operator() (const std::vector< int > &indices) const
VectorView_< ELT > operator() (const std::vector< int > &indices)
THerm transpose () const
THerm updTranspose ()
THerm operator~ () const
THerm operator~ ()
const VectorBaseoperator+ () const
const TNegnegate () const
TNegupdNegate ()
const TNegoperator- () const
TNegoperator- ()
VectorBaseresize (int m)
VectorBaseresizeKeep (int m)
void clear ()
 This restores the MatrixBase to the state it would be in had it been constructed specifying only its handle commitment.
ELT sum () const
 Form the column sums of this matrix, returned as a RowVector.
VectorIterator< ELT,
VectorBase< ELT > > 
begin ()
VectorIterator< ELT,
VectorBase< ELT > > 
end ()
VectorBase "owner" construction

These constructors create new VectorBase objects which own their own data and are (at least by default) resizable.

The resulting matrices are m X 1 with the number of columns locked at 1. If there is any data allocated but not explicitly initialized, that data will be uninitialized garbage in Release builds but will be initialized to NaN (at a performance cost) in Debug builds.



 VectorBase (int m=0)
 Default constructor makes a 0x1 matrix locked at 1 column; you can provide an initial allocation if you want.
 VectorBase (const VectorBase &source)
 Copy constructor is a deep copy (not appropriate for views!).
 VectorBase (const TNeg &source)
 Implicit conversion from compatible vector with negated elements.
 VectorBase (int m, const ELT &initialValue)
 Construct an owner vector of length m, with each element initialized to the given value.
 VectorBase (int m, const ELT *cppInitialValues)
 Construct an owner vector of length m, with the elements initialized sequentially from a C++ array of elements which is assumed to be of length m.
VectorBase construction from pre-existing data

Construct a non-resizeable, VectorBase view of externally supplied data.

Note that stride should be interpreted as "the number of scalars between elements" and for composite elements may have a different value if the source is a C++ array of elements vs. a Simmatrix packed data array. We provide constructors for both read-only and writable external data.



 VectorBase (int m, int stride, const Scalar *s)
 Construct a read-only view of existing data.
 VectorBase (int m, int stride, Scalar *s)
 Construct a writable view into existing data.
VectorBase construction from an existing Helper.

Create a new VectorBase from an existing helper.

Both shallow (view) and deep copies are possible. For shallow copies, there is a constructor providing a read-only view of the original data and one providing a writable view into the original data.



 VectorBase (MatrixHelper< Scalar > &h, const typename MatrixHelper< Scalar >::ShallowCopy &s)
 Construct a writable view into the source data.
 VectorBase (const MatrixHelper< Scalar > &h, const typename MatrixHelper< Scalar >::ShallowCopy &s)
 Construct a read-only view of the source data.
 VectorBase (const MatrixHelper< Scalar > &h, const typename MatrixHelper< Scalar >::DeepCopy &d)
 Construct a new owner vector initialized with the data from the source.

Protected Member Functions

 VectorBase (MatrixHelperRep< Scalar > *hrep)

Detailed Description

template<class ELT>
class SimTK::VectorBase< ELT >

This is a dataless rehash of the MatrixBase class to specialize it for Vectors.

This mostly entails overriding a few of the methods. Note that all the MatrixBase operations remain available if you static_cast<> this up to a MatrixBase.


Constructor & Destructor Documentation

VectorBase ( int  m = 0  )  [inline, explicit]

Default constructor makes a 0x1 matrix locked at 1 column; you can provide an initial allocation if you want.

VectorBase ( const VectorBase< ELT > &  source  )  [inline]

Copy constructor is a deep copy (not appropriate for views!).

That means it creates a new, densely packed vector whose elements are initialized from the source object.

VectorBase ( const TNeg source  )  [inline]

Implicit conversion from compatible vector with negated elements.

VectorBase ( int  m,
const ELT &  initialValue 
) [inline]

Construct an owner vector of length m, with each element initialized to the given value.

VectorBase ( int  m,
const ELT *  cppInitialValues 
) [inline]

Construct an owner vector of length m, with the elements initialized sequentially from a C++ array of elements which is assumed to be of length m.

Note that we are expecting C++ packing; don't use this to initialize one Simmatrix vector from another because Simmatrix may pack its elements more densely than C++.

VectorBase ( int  m,
int  stride,
const Scalar *  s 
) [inline]

Construct a read-only view of existing data.

VectorBase ( int  m,
int  stride,
Scalar *  s 
) [inline]

Construct a writable view into existing data.

VectorBase ( MatrixHelper< Scalar > &  h,
const typename MatrixHelper< Scalar >::ShallowCopy &  s 
) [inline]

Construct a writable view into the source data.

VectorBase ( const MatrixHelper< Scalar > &  h,
const typename MatrixHelper< Scalar >::ShallowCopy &  s 
) [inline]

Construct a read-only view of the source data.

VectorBase ( const MatrixHelper< Scalar > &  h,
const typename MatrixHelper< Scalar >::DeepCopy &  d 
) [inline]

Construct a new owner vector initialized with the data from the source.

VectorBase ( MatrixHelperRep< Scalar > *  hrep  )  [inline, explicit, protected]

Member Function Documentation

TAbs abs (  )  const [inline]

abs() with the result as a function return.

More convenient than the other abs() member function, but may involve an additional copy of the matrix.

Reimplemented from MatrixBase< ELT >.

Referenced by SimTK::abs().

VectorIterator<ELT, VectorBase<ELT> > begin (  )  [inline]

Referenced by SimTK::median(), and SimTK::sort().

void clear (  )  [inline]

This restores the MatrixBase to the state it would be in had it been constructed specifying only its handle commitment.

The size will have been reduced to the smallest size consistent with the commitment.

Reimplemented from MatrixBase< ELT >.

EltResult<EE>::Dvd elementwiseDivide ( const VectorBase< EE > &  v  )  const [inline]

Reimplemented from MatrixBase< ELT >.

void elementwiseDivide ( const VectorBase< EE > &  v,
typename EltResult< EE >::Dvd &  out 
) const [inline]

Reimplemented from MatrixBase< ELT >.

VectorBase<EE>::template EltResult<ELT>::Dvd elementwiseDivideFromLeft ( const VectorBase< EE > &  v  )  const [inline]

Reimplemented from MatrixBase< ELT >.

void elementwiseDivideFromLeft ( const VectorBase< EE > &  v,
typename VectorBase< EE >::template EltResult< ELT >::Dvd &  out 
) const [inline]

Reimplemented from MatrixBase< ELT >.

VectorBase& elementwiseDivideFromLeftInPlace ( const VectorBase< EE > &  r  )  [inline]

M(i,j) = R(i,j) / M(i,j); R must have same dimensions as this.

Reimplemented from MatrixBase< ELT >.

VectorBase& elementwiseDivideInPlace ( const VectorBase< EE > &  r  )  [inline]

M(i,j) /= R(i,j); R must have same dimensions as this.

Reimplemented from MatrixBase< ELT >.

VectorBase<typename CNT<ELT>::TInvert> elementwiseInvert (  )  const [inline]

Return out[i]=this[i]^-1 as function return.

Reimplemented from MatrixBase< ELT >.

void elementwiseInvert ( VectorBase< typename CNT< ELT >::TInvert > &  out  )  const [inline]

Set supplied out[i] = this[i]^-1.

Reimplemented from MatrixBase< ELT >.

VectorBase& elementwiseInvertInPlace (  )  [inline]

Set this[i] = this[i]^-1.

Reimplemented from MatrixBase< ELT >.

EltResult<EE>::Mul elementwiseMultiply ( const VectorBase< EE > &  v  )  const [inline]

Reimplemented from MatrixBase< ELT >.

void elementwiseMultiply ( const VectorBase< EE > &  v,
typename EltResult< EE >::Mul &  out 
) const [inline]

Reimplemented from MatrixBase< ELT >.

VectorBase<EE>::template EltResult<ELT>::Mul elementwiseMultiplyFromLeft ( const VectorBase< EE > &  v  )  const [inline]

Reimplemented from MatrixBase< ELT >.

void elementwiseMultiplyFromLeft ( const VectorBase< EE > &  v,
typename VectorBase< EE >::template EltResult< ELT >::Mul &  out 
) const [inline]

Reimplemented from MatrixBase< ELT >.

VectorBase& elementwiseMultiplyFromLeftInPlace ( const VectorBase< EE > &  r  )  [inline]

M(i,j) = R(i,j) * M(i,j); R must have same dimensions as this.

Reimplemented from MatrixBase< ELT >.

VectorBase& elementwiseMultiplyInPlace ( const VectorBase< EE > &  r  )  [inline]

M(i,j) *= R(i,j); R must have same dimensions as this.

Reimplemented from MatrixBase< ELT >.

VectorIterator<ELT, VectorBase<ELT> > end (  )  [inline]

Referenced by SimTK::median(), and SimTK::sort().

VectorView_<ELT> index ( const std::vector< int > &  indices  )  const [inline]
int ncol (  )  const [inline]

Return the number of columns n in the logical shape of this matrix.

Reimplemented from MatrixBase< ELT >.

const TNeg& negate (  )  const [inline]

Reimplemented from MatrixBase< ELT >.

Referenced by VectorBase< Real >::operator-().

ptrdiff_t nelt (  )  const [inline]

Return the number of elements in the logical shape of this matrix.

This has nothing to do with how many elements are actually stored; it is simply the product of the logical number of rows and columns, that is, nrow()*ncol(). Note that although each dimension is limited to a 32 bit size, the product of those dimensions may be > 32 bits on a 64 bit machine so the return type may be larger than that of nrow() and ncol().

Reimplemented from MatrixBase< ELT >.

int nrow (  )  const [inline]
operator const Matrix_< ELT > & (  )  const [inline]
operator const MatrixView_< ELT > & (  )  const [inline]
operator const Vector_< ELT > & (  )  const [inline]
operator const VectorView_< ELT > & (  )  const [inline]
operator Matrix_< ELT > & (  )  [inline]
operator MatrixView_< ELT > & (  )  [inline]
operator Vector_< ELT > & (  )  [inline]
operator VectorView_< ELT > & (  )  [inline]
VectorView_<ELT> operator() ( const std::vector< int > &  indices  )  [inline]
VectorView_<ELT> operator() ( const std::vector< int > &  indices  )  const [inline]
VectorView_<ELT> operator() ( int  i,
int  m 
) [inline]

Reimplemented from MatrixBase< ELT >.

VectorView_<ELT> operator() ( int  i,
int  m 
) const [inline]

Reimplemented from MatrixBase< ELT >.

ELT& operator() ( int  i  )  [inline]

Reimplemented from MatrixBase< ELT >.

const ELT& operator() ( int  i  )  const [inline]

Reimplemented from MatrixBase< ELT >.

VectorBase& operator*= ( const StdNumber &  t  )  [inline]
const VectorBase& operator+ (  )  const [inline]

Reimplemented from MatrixBase< ELT >.

VectorBase& operator+= ( const VectorBase< EE > &  b  )  [inline]

Reimplemented from MatrixBase< ELT >.

Reimplemented in Vector_< T >, and Vector_< Real >.

VectorBase& operator+= ( const VectorBase< ELT > &  r  )  [inline]
TNeg& operator- (  )  [inline]

Reimplemented from MatrixBase< ELT >.

const TNeg& operator- (  )  const [inline]

Reimplemented from MatrixBase< ELT >.

VectorBase& operator-= ( const VectorBase< EE > &  b  )  [inline]

Reimplemented from MatrixBase< ELT >.

Reimplemented in Vector_< T >, and Vector_< Real >.

VectorBase& operator-= ( const VectorBase< ELT > &  r  )  [inline]
VectorBase& operator/= ( const StdNumber &  t  )  [inline]
VectorBase& operator= ( const ELT &  t  )  [inline]

Fill current allocation with copies of element.

Note that this is not the same behavior as assignment for Matrices, where only the diagonal is set (and everything else is set to zero.)

Reimplemented from MatrixBase< ELT >.

Reimplemented in VectorView_< ELT >, Vector_< ELT >, Vector_< T >, and Vector_< Real >.

VectorBase& operator= ( const VectorBase< EE > &  b  )  [inline]

Reimplemented from MatrixBase< ELT >.

Reimplemented in VectorView_< ELT >, Vector_< ELT >, Vector_< T >, and Vector_< Real >.

VectorBase& operator= ( const VectorBase< ELT > &  b  )  [inline]

Copy assignment is deep copy but behavior depends on type of lhs: if view, rhs must match.

If owner, we reallocate and copy rhs.

Reimplemented from MatrixBase< ELT >.

Reimplemented in VectorView_< ELT >, and Vector_< ELT >.

Referenced by Vector_< Real >::operator=(), and VectorView_< ELT >::operator=().

ELT& operator[] ( int  i  )  [inline]

Reimplemented from MatrixBase< ELT >.

const ELT& operator[] ( int  i  )  const [inline]

Reimplemented from MatrixBase< ELT >.

THerm operator~ (  )  [inline]

Reimplemented from MatrixBase< ELT >.

THerm operator~ (  )  const [inline]

Reimplemented from MatrixBase< ELT >.

VectorBase& resize ( int  m  )  [inline]

Referenced by GCVSPLUtil::gcvspl().

VectorBase& resizeKeep ( int  m  )  [inline]
EltResult<EE>::Mul rowScale ( const VectorBase< EE > &  v  )  const [inline]
void rowScale ( const VectorBase< EE > &  v,
typename EltResult< EE >::Mul &  out 
) const [inline]
VectorBase& rowScaleInPlace ( const VectorBase< EE > &  v  )  [inline]

There's only one column here so it's a bit wierd to use rowScale rather than elementwiseMultiply, but there's nothing really wrong with it.

Using colScale would be really wacky since it is the same as a scalar multiply. We won't support colScale here except through inheritance where it will not be much use.

int size (  )  const [inline]
ELT sum (  )  const [inline]

Form the column sums of this matrix, returned as a RowVector.

Reimplemented from MatrixBase< ELT >.

Referenced by SimTK::sum().

THerm transpose (  )  const [inline]

Reimplemented from MatrixBase< ELT >.

Referenced by VectorBase< Real >::operator~().

VectorView_<ELT> updIndex ( const std::vector< int > &  indices  )  [inline]
TNeg& updNegate (  )  [inline]

Reimplemented from MatrixBase< ELT >.

Referenced by VectorBase< Real >::operator-().

THerm updTranspose (  )  [inline]

Reimplemented from MatrixBase< ELT >.

Referenced by VectorBase< Real >::operator~().


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

Generated on Wed Dec 30 11:05:21 2009 for SimTKcore by  doxygen 1.6.1