Isis Developer Reference
Isis::SparseBlockRowMatrix Class Reference

SparseBlockRowMatrix. More...

#include <SparseBlockMatrix.h>

Inheritance diagram for Isis::SparseBlockRowMatrix:
Inheritance graph
Collaboration diagram for Isis::SparseBlockRowMatrix:
Collaboration graph

Public Member Functions

 SparseBlockRowMatrix ()
 
 ~SparseBlockRowMatrix ()
 Destructor. More...
 
 SparseBlockRowMatrix (const SparseBlockRowMatrix &src)
 Copy constructor. More...
 
SparseBlockRowMatrixoperator= (const SparseBlockRowMatrix &src)
 "Equals" operator. More...
 
void wipe ()
 Deletes all pointer elements and removes them from the map. More...
 
void copy (const SparseBlockRowMatrix &src)
 Copy method. More...
 
void zeroBlocks ()
 Sets all elements of all matrix blocks to zero. More...
 
bool insertMatrixBlock (int nRowBlock, int nRows, int nCols)
 Inserts a "newed" LinearAlgebra::Matrix pointer of size (nRows, nCols) into the map with the block row number as key. More...
 
void copyToBoost (boost::numeric::ublas::compressed_matrix< double > &B)
 Copies a SparseBlockRowMatrix to a Boost compressed_matrix. More...
 
int getLeadingColumnsForBlock (int nblockColumn)
 Sums and returns the number of columns in each matrix block prior to nblockColumn. More...
 
int numberOfElements ()
 Returns total number of matrix elements in map (NOTE: NOT the number of matrix blocks). More...
 
void print (std::ostream &outstream)
 Prints matrix blocks to std output stream out for debugging. More...
 
void printClean (std::ostream &outstream)
 Prints matrix blocks to std output stream out for debugging. More...
 

Detailed Description

SparseBlockRowMatrix.

A SparseBlockRowMatrix is a QMap of square matrix blocks and represents a row of square matrix blocks in the reduced normal equations matrix. The key into each row map is the block’s column index. The value at each key is a square dense matrix (Boost matrix) with a dimension equivalent to the number of exterior orientation parameters used for the image. Zero blocks are not stored.

Note that this class is not apparently different than the SparseBlockColumnMatrix. It was implemented for convenience in the BundleAdjustment class for those times when we need to access rows of matrix blocks as opposed to columns of matrix blocks.

TO BE RESOLVED: Do we really need this as a separate class? Can we do everything we need with the SparseBlockColumnMatrix?

Author
2011-07-29 Ken Edmundson

Constructor & Destructor Documentation

◆ SparseBlockRowMatrix() [1/2]

Isis::SparseBlockRowMatrix::SparseBlockRowMatrix ( )
inline

◆ ~SparseBlockRowMatrix()

Isis::SparseBlockRowMatrix::~SparseBlockRowMatrix ( )

Destructor.

See description of wipe method below.

◆ SparseBlockRowMatrix() [2/2]

Isis::SparseBlockRowMatrix::SparseBlockRowMatrix ( const SparseBlockRowMatrix src)

Copy constructor.

Calls copy method immediately below.

Parameters
srcSparseBlockRowMatrix to copy

Member Function Documentation

◆ copy()

void Isis::SparseBlockRowMatrix::copy ( const SparseBlockRowMatrix src)

Copy method.

Parameters
srcSparseBlockRowMatrix to copy

◆ copyToBoost()

void Isis::SparseBlockRowMatrix::copyToBoost ( boost::numeric::ublas::compressed_matrix< double > &  B)

Copies a SparseBlockRowMatrix to a Boost compressed_matrix.

This may be a temporary implementation

Parameters
BBoost matrix to copy this SparseBlockRowMatrix to

◆ getLeadingColumnsForBlock()

int Isis::SparseBlockRowMatrix::getLeadingColumnsForBlock ( int  nblockColumn)

Sums and returns the number of columns in each matrix block prior to nblockColumn.

Parameters
nblockColumn
Returns
int Number of leading columns for block at nblockColumn

◆ insertMatrixBlock()

bool Isis::SparseBlockRowMatrix::insertMatrixBlock ( int  nRowBlock,
int  nRows,
int  nCols 
)

Inserts a "newed" LinearAlgebra::Matrix pointer of size (nRows, nCols) into the map with the block row number as key.

The matrix::clear call initializes the matrix elements to zero. If an entry exists at the key nRowBlock, no insertion is made.

Parameters
nRowBlockblock row number of inserted matrix (key into map)
nRowsnumber of rows in matrix to be inserted
nColsnumber of columns in matrix to be inserted
Returns
bool Returns true if insertion successful Returns false if block already exists at nRowBlock or if allocation of new block fails TODO: we return true in the SparseBlockColumnMatrix if the block already exists, why is it different here?

Referenced by Isis::operator>>().

◆ numberOfElements()

int Isis::SparseBlockRowMatrix::numberOfElements ( )

Returns total number of matrix elements in map (NOTE: NOT the number of matrix blocks).

The sum of all the elements of all the matrix blocks.

Returns
int Total number of matrix elements in SparseBlockRowMatrix

◆ operator=()

SparseBlockRowMatrix & Isis::SparseBlockRowMatrix::operator= ( const SparseBlockRowMatrix src)

"Equals" operator.

Parameters
srcSparseBlockRowMatrix to check against

◆ print()

void Isis::SparseBlockRowMatrix::print ( std::ostream &  outstream)

Prints matrix blocks to std output stream out for debugging.

Parameters
outstreamoutput stream

◆ printClean()

void Isis::SparseBlockRowMatrix::printClean ( std::ostream &  outstream)

Prints matrix blocks to std output stream out for debugging.

Parameters
outstreamoutput stream

◆ wipe()

void Isis::SparseBlockRowMatrix::wipe ( )

Deletes all pointer elements and removes them from the map.

Effectively, a destructor, and in fact, called by the ~SparseBlockColumnMatrix above.

◆ zeroBlocks()

void Isis::SparseBlockRowMatrix::zeroBlocks ( )

Sets all elements of all matrix blocks to zero.


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