Isis 3.0
Home
SparseBlockMatrix.h
Go to the documentation of this file.
1 #ifndef SparseBlockMatrix_h
2 #define SparseBlockMatrix_h
3 
23 // std library
24 #include <iostream>
25 
26 // Qt library
27 #include <QMap>
28 #include <QList>
29 
30 // boost library
31 #include <boost/numeric/ublas/fwd.hpp>
32 
33 // Isis library
34 #include "LinearAlgebra.h"
35 
36 // Qt library
37 class QDebug;
38 
39 namespace Isis {
40 
67  public QMap< int, LinearAlgebra::Matrix * > {
68 
69  public:
70  SparseBlockColumnMatrix(){} // default constructor
71  ~SparseBlockColumnMatrix(); // destructor
72 
73  // copy constructor
75 
77 
78  void wipe();
79  void copy(const SparseBlockColumnMatrix& src);
80 
81  void zeroBlocks();
82  bool insertMatrixBlock(int nColumnBlock, int nRows, int nCols);
83  int numberOfElements();
84  int numberOfRows();
85  int numberOfColumns();
86  void print(std::ostream& outstream);
87  void printClean(std::ostream& outstream);
88  };
89 
90  // operators to read/write SparseBlockColumnMatrix to/from binary disk file
91  QDataStream &operator<<(QDataStream &, const SparseBlockColumnMatrix &);
92  QDataStream &operator>>(QDataStream &, SparseBlockColumnMatrix &);
93 
94  // operator to write SparseBlockColumnMatrix to QDebug stream
95  QDebug operator<<(QDebug dbg, const SparseBlockColumnMatrix &sbcm);
96 
97 
126  public QMap< int, LinearAlgebra::Matrix * > {
127 
128  public:
129  SparseBlockRowMatrix(){} // default constructor
131 
132  // copy constructor
134 
136 
137 
138  void wipe();
139  void copy(const SparseBlockRowMatrix& src);
140 
141  void zeroBlocks();
142  bool insertMatrixBlock(int nRowBlock, int nRows, int nCols);
143  void copyToBoost(boost::numeric::ublas::compressed_matrix<double>& B);
144  int getLeadingColumnsForBlock(int nblockColumn);
145  int numberOfElements();
146  void print(std::ostream& outstream);
147  void printClean(std::ostream& outstream);
148  };
149 
150  // operators to read/write SparseBlockRowMatrix to/from binary disk file
151  QDataStream &operator<<(QDataStream &, const SparseBlockRowMatrix &);
152  QDataStream &operator>>(QDataStream &, SparseBlockRowMatrix &);
153 
154  // operator to write SparseBlockRowMatrix to QDebug stream
155  QDebug operator<<(QDebug dbg, const SparseBlockRowMatrix &sbcm);
156 
187  class SparseBlockMatrix : public QList< SparseBlockColumnMatrix* > {
188 
189  public:
190  SparseBlockMatrix() {} // default constructor
192 
193  // copy constructor
195 
197 
198  void wipe();
199  void copy(const SparseBlockMatrix& src);
200 
201  bool setNumberOfColumns( int n );
202  void zeroBlocks();
203  bool insertMatrixBlock(int nColumnBlock, int nRowBlock, int nRows, int nCols);
204  LinearAlgebra::Matrix *getBlock(int column, int row);
205  int numberOfBlocks();
208  int numberOfElements();
209  void print(std::ostream& outstream);
210  void printClean(std::ostream& outstream);
211  bool write(std::ofstream &fp_out, bool binary=true);
212  int getLeadingColumnsForBlock(int nblockColumn);
213  int getLeadingRowsForBlock(int nblockRow);
214  };
215 
216  // operators to read/write SparseBlockMatrix to/from binary disk file
217  QDataStream &operator<<(QDataStream &, const SparseBlockMatrix &);
218  QDataStream &operator>>(QDataStream &, SparseBlockMatrix &);
219 
220  // operator to write SparseBlockMatrix to QDebug stream
221  QDebug operator<<(QDebug dbg, const SparseBlockMatrix &m);
222 }
223 
224 #endif
bool insertMatrixBlock(int nColumnBlock, int nRowBlock, int nRows, int nCols)
Inserts a &quot;newed&quot; boost LinearAlgebra::Matrix pointer of size (nRows, nCols) into the matrix at nColu...
Definition: SparseBlockMatrix.cpp:859
void copy(const SparseBlockRowMatrix &src)
Copy method.
Definition: SparseBlockMatrix.cpp:422
SparseBlockMatrix.
Definition: SparseBlockMatrix.h:187
bool write(std::ofstream &fp_out, bool binary=true)
SparseBlockColumnMatrix.
Definition: SparseBlockMatrix.h:66
SparseBlockRowMatrix()
Definition: SparseBlockMatrix.h:129
void wipe()
Deletes all pointer elements and removes them from the map.
Definition: SparseBlockMatrix.cpp:401
SparseBlockRowMatrix & operator=(const SparseBlockRowMatrix &src)
&quot;Equals&quot; operator.
Definition: SparseBlockMatrix.cpp:446
void zeroBlocks()
Sets all elements of all matrix blocks to zero.
Definition: SparseBlockMatrix.cpp:575
int numberOfElements()
Returns total number of matrix elements in map (NOTE: NOT the number of matrix blocks).
Definition: SparseBlockMatrix.cpp:494
~SparseBlockColumnMatrix()
Destructor.
Definition: SparseBlockMatrix.cpp:29
int numberOfElements()
Returns total number of matrix elements in map (NOTE: NOT the number of matrix blocks).
Definition: SparseBlockMatrix.cpp:132
SparseBlockColumnMatrix & operator=(const SparseBlockColumnMatrix &src)
&quot;Equals&quot; operator.
Definition: SparseBlockMatrix.cpp:83
boost::numeric::ublas::matrix< double > Matrix
Definition for an Isis::LinearAlgebra::Matrix of doubles.
Definition: LinearAlgebra.h:114
void zeroBlocks()
Sets all elements of all matrix blocks to zero.
Definition: SparseBlockMatrix.cpp:263
void printClean(std::ostream &outstream)
Prints matrix blocks to std output stream out for debugging.
Definition: SparseBlockMatrix.cpp:230
int getLeadingColumnsForBlock(int nblockColumn)
Sums and returns the number of columns in each matrix block prior to nblockColumn.
Definition: SparseBlockMatrix.cpp:625
int getLeadingRowsForBlock(int nblockRow)
Sums and returns the number of rows in each matrix block prior to nblockRow.
Definition: SparseBlockMatrix.cpp:1052
void wipe()
Deletes all pointer elements and removes them from the map.
Definition: SparseBlockMatrix.cpp:38
int numberOfElements()
Returns number of matrix elements in matrix.
Definition: SparseBlockMatrix.cpp:927
int numberOfRows()
Returns total number of rows in map (this needs to be clarified and maybe rewritten).
Definition: SparseBlockMatrix.cpp:179
~SparseBlockMatrix()
Destructor.
Definition: SparseBlockMatrix.cpp:773
bool insertMatrixBlock(int nRowBlock, int nRows, int nCols)
Inserts a &quot;newed&quot; LinearAlgebra::Matrix pointer of size (nRows, nCols) into the map with the block ro...
Definition: SparseBlockMatrix.cpp:471
std::istream & operator>>(std::istream &is, CSVReader &csv)
Input read operator for input stream sources.
Definition: CSVReader.cpp:463
void wipe()
Deletes all pointer elements and removes them from the list.
Definition: SparseBlockMatrix.cpp:782
void printClean(std::ostream &outstream)
Prints matrix blocks to std output stream out for debugging.
Definition: SparseBlockMatrix.cpp:542
~SparseBlockRowMatrix()
Destructor.
Definition: SparseBlockMatrix.cpp:392
void print(std::ostream &outstream)
Prints matrix blocks to std output stream out for debugging.
Definition: SparseBlockMatrix.cpp:969
void print(std::ostream &outstream)
Prints matrix blocks to std output stream out for debugging.
Definition: SparseBlockMatrix.cpp:203
void print(std::ostream &outstream)
Prints matrix blocks to std output stream out for debugging.
Definition: SparseBlockMatrix.cpp:516
void printClean(std::ostream &outstream)
Prints matrix blocks to std output stream out for debugging.
Definition: SparseBlockMatrix.cpp:993
int numberOfColumns()
Returns total number of columns in map (NOTE: NOT the number of matrix blocks).
Definition: SparseBlockMatrix.cpp:154
int numberOfOffDiagonalBlocks()
Returns number of off-diagonal matrix blocks.
Definition: SparseBlockMatrix.cpp:917
SparseBlockMatrix()
Definition: SparseBlockMatrix.h:190
LinearAlgebra::Matrix * getBlock(int column, int row)
Returns pointer to boost matrix at position (column, row).
Definition: SparseBlockMatrix.cpp:950
void copyToBoost(boost::numeric::ublas::compressed_matrix< double > &B)
Copies a SparseBlockRowMatrix to a Boost compressed_matrix.
Definition: SparseBlockMatrix.cpp:590
int numberOfDiagonalBlocks()
Returns number of diagonal matrix blocks (equivalent to size - there is one per column).
Definition: SparseBlockMatrix.cpp:888
void zeroBlocks()
Sets all elements of all matrix blocks to zero.
Definition: SparseBlockMatrix.cpp:958
Definition: BoxcarCachingAlgorithm.h:29
SparseBlockColumnMatrix()
Definition: SparseBlockMatrix.h:70
bool insertMatrixBlock(int nColumnBlock, int nRows, int nCols)
Inserts a &quot;newed&quot; LinearAlgebra::Matrix pointer of size (nRows, nCols) into the map with the block co...
Definition: SparseBlockMatrix.cpp:105
void copy(const SparseBlockColumnMatrix &src)
Copy method.
Definition: SparseBlockMatrix.cpp:59
bool setNumberOfColumns(int n)
Initializes number of columns (SparseBlockColumnMatrix).
Definition: SparseBlockMatrix.cpp:837
int numberOfBlocks()
Returns total number of blocks in matrix.
Definition: SparseBlockMatrix.cpp:869
QDebug operator<<(QDebug debug, const Hillshade &hillshade)
Print this class out to a QDebug object.
Definition: Hillshade.cpp:308
SparseBlockMatrix & operator=(const SparseBlockMatrix &src)
&quot;Equals&quot; operator.
Definition: SparseBlockMatrix.cpp:819
SparseBlockRowMatrix.
Definition: SparseBlockMatrix.h:125
void copy(const SparseBlockMatrix &src)
Copy method.
Definition: SparseBlockMatrix.cpp:803
Definition: CubeIoHandler.h:38
int getLeadingColumnsForBlock(int nblockColumn)
Sums and returns the number of columns in each matrix block prior to nblockColumn.
Definition: SparseBlockMatrix.cpp:1018