ConicBundle
|
Matrix class for integral values of type Integer More...
#include <indexmat.hxx>
Public Member Functions | |
Constructors, Destructor, and Initialization (Members) | |
Indexmatrix () | |
empty matrix | |
Indexmatrix (const Indexmatrix &A, Integer d=1) | |
copy constructor, *this=d*A | |
Indexmatrix (const Range &) | |
generate a column vector holding the indices of this CH_Matrix_Classes::Range | |
Indexmatrix (Integer nr, Integer nc) | |
generate a matrix of size nr x nc but WITHOUT initializing the memory More... | |
Indexmatrix (Integer nr, Integer nc, Integer d) | |
generate a matrix of size nr x nc initializing all elements to the value d | |
Indexmatrix (Integer nr, Integer nc, const Integer *dp, Integer incr=1) | |
generate a matrix of size nr x nc initializing the elements from the (one dimensional) array dp with increment incr | |
Indexmatrix (const std::vector< Integer > &vec) | |
copy a std::vector<Integer> to a column vector of the same size and content | |
~Indexmatrix () | |
void | set_init (bool) |
after external initialization, call matrix.set_init(true) (not needed if CONICBUNDLE_DEBUG is undefined) | |
bool | get_init () const |
returns true if the matrix has been declared initialized (not needed if CONICBUNDLE_DEBUG is undefined) | |
Indexmatrix & | init (const Indexmatrix &A, Integer d=1) |
initialize to *this=A*d | |
Indexmatrix & | init (const Range &) |
initialize *this to a column vector holding the indices of CH_Matrix_Classes::Range | |
Indexmatrix & | init (Integer nr, Integer nc, Integer d) |
intialize *this to a matrix of size nr x nc initializing all elements to the value d | |
Indexmatrix & | init (Integer nr, Integer nc, const Integer *dp, Integer incr=1) |
generate a matrix of size nr x nc initializing the elements from the (one dimensional) array dp with increment incr | |
Indexmatrix & | init (const std::vector< Integer > &vec) |
use std::vector<Integer> to initialize this to a column vector of the same size and content | |
void | newsize (Integer nr, Integer nc) |
resize the matrix to nr x nc elements but WITHOUT initializing the memory More... | |
Conversions from other Matrix Classes (Members) | |
Indexmatrix (const Matrix &) | |
copy with rounding | |
Indexmatrix (const Symmatrix &) | |
copy with rounding | |
Indexmatrix (const Sparsemat &) | |
copy with rounding | |
Indexmatrix (const Sparsesym &) | |
copy with rounding | |
Size and Type Information (Members) | |
void | dim (Integer &_nr, Integer &_nc) const |
returns the number of rows in _nr and the number of columns in _nc | |
Integer | dim () const |
returns the dimension rows * columns when the matrix is regarded as a vector | |
Integer | rowdim () const |
returns the row dimension | |
Integer | coldim () const |
returns the column dimension | |
Mtype | get_mtype () const |
returns the type of the matrix, MTindexmatrix | |
Indexing and Submatrices (Members) | |
Integer & | operator() (Integer i, Integer j) |
returns reference to element (i,j) of the matrix (rowindex i, columnindex j) | |
Integer & | operator() (Integer i) |
returns reference to element (i) of the matrix if regarded as vector of stacked columns [element (irowdim, i/rowdim)] | |
Integer | operator() (Integer i, Integer j) const |
returns value of element (i,j) of the matrix (rowindex i, columnindex j) | |
Integer | operator() (Integer i) const |
returns value of element (i) of the matrix if regarded as vector of stacked columns [element (irowdim, i/rowdim)] | |
Indexmatrix | operator() (const Indexmatrix &vecrow, const Indexmatrix &veccol) const |
returns a new submatrix as indexed by vecrow and veccol, A(i,j)=(*this)(vecrow(i),veccol(j)) for 0<=i<vecrow.dim(), 0<=j<veccol.dim() | |
Indexmatrix | operator() (const Indexmatrix &A) const |
returns a new matrix B of the same shape as A with B(i,j)=(*this)(A(i),A(j)) for 0<=i<A.rowdim(), 0<=j<A.coldim() | |
Integer & | operator[] (Integer i) |
returns reference to element (i) of the matrix if regarded as vector of stacked columns [element (irowdim, i/rowdim)] | |
Integer | operator[] (Integer i) const |
returns value of element (i) of the matrix if regarded as vector of stacked columns [element (irowdim, i/rowdim)] | |
Indexmatrix | col (Integer i) const |
returns column i copied to a new matrix | |
Indexmatrix | row (Integer i) const |
returns row i copied to a new matrix | |
Indexmatrix | cols (const Indexmatrix &vec) const |
returns a matrix of size this->rowdim() x vec.dim(), with column i a copy of column vec(i) of *this | |
Indexmatrix | rows (const Indexmatrix &vec) const |
returns a matrix of size vec.dim() x this->rowdim(), with row i a copy of row vec(i) of *this | |
Indexmatrix & | triu (Integer d=0) |
keeps upper triangle starting with diagonal d; set (*this)(i,j)=0 for 0<=i<row dimension, 0<=j<min(i+d,column dimension), returns *this | |
Indexmatrix & | tril (Integer d=0) |
keeps lower triangle starting with diagonal d; set (*this)(i,j)=0 for 0<=i<row dimension, max(0,i+d)<=j<column dimension, returns *this | |
Indexmatrix & | subassign (const Indexmatrix &vecrow, const Indexmatrix &veccol, const Indexmatrix &A) |
assigns A to a submatrix of *this, (*this)(vecrow(i),veccol(j))=A(i,j) for 0<=i<vecrow.dim(), 0<=j<veccol.dim() | |
Indexmatrix & | subassign (const Indexmatrix &vec, const Indexmatrix &A) |
assigns vector A to a subvector of *this, (*this)(vec(i))=A(i) for 0<=i<vec.dim(), *this, vec, and A may be rectangular matrices, their dimesions are not changed, returns *this | |
Indexmatrix & | delete_rows (const Indexmatrix &ind, bool sorted_increasingly=false) |
all rows indexed by vector ind are deleted, no row should appear twice in ind, remaining rows are moved up keeping their order, returns *this | |
Indexmatrix & | delete_cols (const Indexmatrix &ind, bool sorted_increasingly=false) |
all colmuns indexed by vector ind are deleted, no column should appear twice in ind, remaining columns are moved up keeping their order, returns *this | |
Indexmatrix & | insert_row (Integer i, const Indexmatrix &v) |
insert the row vector v before row i, 0<=i<= row dimension, for i==row dimension the row is appended below; appending to a 0x0 matrix is allowed, returns *this | |
Indexmatrix & | insert_col (Integer i, const Indexmatrix &v) |
insert a column before column i, 0<=i<= column dimension, for i==column dimension the column is appended at the right; appending to a 0x0 matrix is allowed, returns *this | |
Indexmatrix & | reduce_length (Integer n) |
(*this) is set to a column vector of length min{max{0,n},dim()}; usually used to truncate a vector, returns *this | |
Indexmatrix & | concat_right (const Indexmatrix &A) |
concats matrix A to the right of *this, A or *this may be the 0x0 matrix initally, returns *this | |
Indexmatrix & | concat_below (const Indexmatrix &A) |
concats matrix A to the bottom of *this, A or *this may be the 0x0 matrix initally, returns *this | |
Indexmatrix & | concat_below (Integer d) |
concat value d at the bottom of *this, *this must be a column vector or the 0x0 matrix, returns *this | |
Indexmatrix & | concat_right (Integer d) |
concat value d at the right of *this, *this must be a row vector or the 0x0 matrix, returns *this | |
Indexmatrix & | enlarge_right (Integer addnc) |
enlarge the matrix by addnc>=0 columns without intializaton of the new columns, returns *this (marked as not initialized if nr>0) | |
Indexmatrix & | enlarge_below (Integer addnr) |
enlarge the matrix by addnr>=0 rows without intializaton of the new rows, returns *this (marked as not initialized if nc>0) | |
Indexmatrix & | enlarge_right (Integer addnc, Integer d) |
enlarge the matrix by addnc>=0 columns intializing the new columns by value d, returns *this | |
Indexmatrix & | enlarge_below (Integer addnr, Integer d) |
enlarge the matrix by addnr>=0 rows intializing the new rows by value d, returns *this | |
Indexmatrix & | enlarge_right (Integer addnc, const Integer *dp, Integer d=1) |
enlarge the matrix by addnc>=0 columns intializing the new columns by the values pointed to by dp times d, returns *this | |
Indexmatrix & | enlarge_below (Integer addnr, const Integer *dp, Integer d=1) |
enlarge the matrix by addnr>=0 rows intializing the new rows by the values pointed to by dp times d, returns *this | |
Integer * | get_store () |
returns the current address of the internal value array; use cautiously, do not use delete! | |
const Integer * | get_store () const |
returns the current address of the internal value array; use cautiously! | |
BLAS-like Routines (Members) | |
Indexmatrix & | xeya (const Indexmatrix &A, Integer d=1) |
sets *this=d*A and returns *this | |
Indexmatrix & | xpeya (const Indexmatrix &A, Integer d=1) |
sets *this+=d*A and returns *this | |
Usual Arithmetic Operators (Members) | |
Indexmatrix & | operator= (const Indexmatrix &A) |
Indexmatrix & | operator*= (const Indexmatrix &s) |
Indexmatrix & | operator+= (const Indexmatrix &v) |
Indexmatrix & | operator-= (const Indexmatrix &v) |
Indexmatrix & | operator%= (const Indexmatrix &A) |
ATTENTION: this is redefined as the Hadamard product, (*this)(i,j)=(*this)(i,j)*A(i,j) for all i,j. | |
Indexmatrix | operator- () const |
Indexmatrix & | operator*= (Integer d) |
Indexmatrix & | operator/= (Integer d) |
ATTENTION: d is NOT checked for 0. | |
Indexmatrix & | operator%= (Integer d) |
sets (*this)(i,j)%=d for all i,j in the modulo meaning of %, ATTENTION: d is NOT checked for 0 | |
Indexmatrix & | operator+= (Integer d) |
sets (*this)(i,j)+=d for all i,j | |
Indexmatrix & | operator-= (Integer d) |
sets (*this)(i,j)-=d for all i,j | |
Indexmatrix & | transpose () |
transposes itself (cheap for vectors, expensive for matrices) | |
Elementwise Operations (Members) | |
Indexmatrix & | rand (Integer nr, Integer nc, Integer lowerb, Integer upperb, CH_Tools::GB_rand *random_generator=0) |
resize *this to an nr x nc matrix and assign to (i,j) a random number uniformly from [lowerb,upperb] for all i,j | |
Indexmatrix & | shuffle (CH_Tools::GB_rand *random_generator=0) |
shuffle the elements randomly (does not change dimensions) | |
Indexmatrix & | sign (void) |
using sign assign (*this)(i,j)=sign((*this)(i,j)) for all i,j | |
Indexmatrix & | abs (void) |
using abs assign (*this)(i,j)=abs((*this)(i,j)) for all i,j | |
Numerical Methods (Members) | |
Indexmatrix & | scale_rows (const Indexmatrix &vec) |
scales each row i of (this) by vec(i), i.e., (*this)=diag(vec)(*this), and returns (*this) | |
Indexmatrix & | scale_cols (const Indexmatrix &vec) |
scales each column i of (*this) by vec(i), i.e., (*this)=(*this)*diag(vec), and returns (*this) | |
Find (Members) | |
Indexmatrix | find () const |
returns an Indexmatrix ind so that (*this)(ind(i)) 0<=i<ind.dim() runs through all nonzero elements | |
Indexmatrix | find_number (Integer num=0) const |
returns an Indexmatrix ind so that (*this)(ind(i)) 0<=i<ind.dim() runs through all elements having value num | |
Input, Output (Members) | |
void | display (std::ostream &out, int precision=0, int width=0, int screenwidth=0) const |
displays a matrix in a pretty way for bounded screen widths; for variables of value zero default values are used. More... | |
void | mfile_output (std::ostream &out, int precision=16, int width=0) const |
outputs a matrix A in the format "[ A(0,1) ... A(0,nc-1)\n ... A(nr-1,nc-1)];\n" so that it can be read e.g. by octave as an m-file More... | |
Private Member Functions | |
void | init_to_zero () |
initialize the matrix to a 0x0 matrix without storage | |
Private Attributes | |
Integer | mem_dim |
amount of memory currently allocated | |
Integer | nr |
number of rows | |
Integer | nc |
number of columns | |
Integer * | m |
pointer to store, order is columnwise (a11,a21,...,anr1,a12,a22,.....) | |
bool | is_init |
flag whether memory is initialized, it is only used if CONICBUNDLE_DEBUG is defined | |
Static Private Attributes | |
static const Mtype | mtype |
used for MatrixError templates (runtime type information was not yet existing) | |
Friends | |
class | Matrix |
class | Symmatrix |
class | Sparsemat |
class | Sparsesym |
Indexing and Submatrices (Friends) | |
Indexmatrix | diag (const Indexmatrix &A) |
returns a column vector v consisting of the elements v(i)=A(i,i), 0<=i<min(row dimension,column dimension) | |
Indexmatrix | triu (const Indexmatrix &A, Integer d) |
retuns a matrix that keeps the upper triangle of A starting with diagonal d, i.e., (i,j)=A(i,j) for 0<=i<row dimension, max(0,i+d)<=j<column dimension, and sets (i,j)=0 otherwise | |
Indexmatrix | tril (const Indexmatrix &A, Integer d) |
retuns a matrix that keeps the lower triangle of A starting with diagonal d, i.e., (i,j)=A(i,j) for 0<=i<row dimension, 0<=j<min(i+d+1,column dimension), and sets (i,j)=0 otherwise | |
Indexmatrix | concat_right (const Indexmatrix &A, const Indexmatrix &B) |
returns a new matrix [A, B], i.e., it concats matrices A and B rowwise; A or B may be a 0x0 matrix | |
Indexmatrix | concat_below (const Indexmatrix &A, const Indexmatrix &B) |
returns the matrix [A; B], i.e., it concats matrices A and B columnwise; A or B may be a 0x0 matrix | |
void | swap (Indexmatrix &A, Indexmatrix &B) |
swap the content of the two matrices A and B (involves no copying) | |
BLAS-like Routines (Friends) | |
Indexmatrix & | xbpeya (Indexmatrix &x, const Indexmatrix &y, Integer alpha, Integer beta, int ytrans) |
returns x= alpha*y+beta*x, where y may be transposed (ytrans=1); if beta==0. then x is initialized to the correct size More... | |
Indexmatrix & | xeyapzb (Indexmatrix &x, const Indexmatrix &y, const Indexmatrix &z, Integer alpha, Integer beta) |
returns x= alpha*y+beta*z; x is initialized to the correct size, see CH_Matrix_Classes::xeyapzb() for default values of alpha and beta. | |
Indexmatrix & | genmult (const Indexmatrix &A, const Indexmatrix &B, Indexmatrix &C, Integer alpha, Integer beta, int atrans, int btrans) |
returns C=beta*C+alpha*A*B, where A and B may be transposed; C must not be equal to A and B; if beta==0 then C is initialized to the correct size | |
Usual Arithmetic Operators (Friends) | |
Indexmatrix | operator* (const Indexmatrix &A, const Indexmatrix &B) |
Indexmatrix | operator+ (const Indexmatrix &A, const Indexmatrix &B) |
Indexmatrix | operator- (const Indexmatrix &A, const Indexmatrix &B) |
Indexmatrix | operator% (const Indexmatrix &A, const Indexmatrix &B) |
ATTENTION: this is redefined as the Hadamard product, (*this)(i,j)=(*this)(i,j)*A(i,j) for all i,j. | |
Indexmatrix | operator* (const Indexmatrix &A, Integer d) |
Indexmatrix | operator* (Integer d, const Indexmatrix &A) |
Indexmatrix | operator/ (const Indexmatrix &A, Integer d) |
ATTENTION: d is NOT checked for 0. | |
Indexmatrix | operator% (const Indexmatrix &A, Integer d) |
sets (i,j)=A(i,j)%d for all i,j in the modulo meaning of %, ATTENTION: d is NOT checked for 0 | |
Indexmatrix | operator+ (const Indexmatrix &A, Integer d) |
returns (i,j)=A(i,j)+d for all i,j | |
Indexmatrix | operator+ (Integer d, const Indexmatrix &A) |
returns (i,j)=A(i,j)+d for all i,j | |
Indexmatrix | operator- (const Indexmatrix &A, Integer d) |
returns (i,j)=A(i,j)-d for all i,j | |
Indexmatrix | operator- (Integer d, const Indexmatrix &A) |
returns (i,j)=d-A(i,j) for all i,j | |
Indexmatrix | transpose (const Indexmatrix &A) |
returns an Indexmatrix that is the transpose of A | |
Connections to other Classes (Friends) | |
std::vector< int > & | assign (std::vector< int > &vec, const Indexmatrix &A) |
interpret A as a vector and copy it to a std::vector<int> which is also returned | |
std::vector< long > & | assign (std::vector< long > &vec, const Indexmatrix &A) |
interpret A as a vector and copy it to a std::vector<long> which is also returned | |
Elementwise Operations (Friends) | |
Indexmatrix | rand (Integer nr, Integer nc, Integer lb, Integer ub, CH_Tools::GB_rand *random_generator) |
return a nr x nc matrix with (i,j) assigned a random number uniformly from [lowerb,upperb] for all i,j | |
Indexmatrix | sign (const Indexmatrix &A) |
return a matrix of the same size as A with (i,j)=sign(A(i,j)) for all i,j, see also CH_Matrix_Classes::sign() | |
Indexmatrix | abs (const Indexmatrix &A) |
returns an Indexmatrix B with entries B(i,j)=abs(A(i,j)) | |
Numerical Methods (Friends) | |
Integer | trace (const Indexmatrix &A) |
returns the sum of the diagonal elements A(i,i) over all i | |
Integer | ip (const Indexmatrix &A, const Indexmatrix &B) |
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j | |
Real | norm2 (const Indexmatrix &A) |
returns the Frobenius norm of A, i.e., the square root of the sum of A(i,j)*A(i,j) over all i,j | |
Indexmatrix | sumrows (const Indexmatrix &A) |
returns a row vector holding the sum over all rows, i.e., (1 1 ... 1)*A | |
Indexmatrix | sumcols (const Indexmatrix &A) |
returns a column vector holding the sum over all columns, i.e., A*(1 1 ... 1)^T | |
Integer | sum (const Indexmatrix &A) |
returns the sum over all elements of A, i.e., (1 1 ... 1)*A*(1 1 ... 1)^T | |
Comparisons, Max, Min, Sort, Find (Friends) | |
Indexmatrix | operator< (const Indexmatrix &A, const Indexmatrix &B) |
returns a matrix having elements (i,j)=Integer(A(i,j)<B(i,j)) for all i,j | |
Indexmatrix | operator> (const Indexmatrix &A, const Indexmatrix &B) |
returns a matrix having elements (i,j)=Integer(A(i,j)>B(i,j)) for all i,j | |
Indexmatrix | operator<= (const Indexmatrix &A, const Indexmatrix &B) |
returns a matrix having elements (i,j)=Integer(A(i,j)<=B(i,j)) for all i,j | |
Indexmatrix | operator>= (const Indexmatrix &A, const Indexmatrix &B) |
returns a matrix having elements (i,j)=Integer(A(i,j)>=B(i,j)) for all i,j | |
Indexmatrix | operator== (const Indexmatrix &A, const Indexmatrix &B) |
returns a matrix having elements (i,j)=Integer(A(i,j)==B(i,j)) for all i,j | |
Indexmatrix | operator!= (const Indexmatrix &A, const Indexmatrix &B) |
returns a matrix having elements (i,j)=Integer(A(i,j)!=B(i,j)) for all i,j | |
Indexmatrix | operator< (const Indexmatrix &A, Integer d) |
returns a matrix having elements (i,j)=Integer(A(i,j)<d) for all i,j | |
Indexmatrix | operator> (const Indexmatrix &A, Integer d) |
returns a matrix having elements (i,j)=Integer(A(i,j)>d) for all i,j | |
Indexmatrix | operator<= (const Indexmatrix &A, Integer d) |
returns a matrix having elements (i,j)=Integer(A(i,j)<=d) for all i,j | |
Indexmatrix | operator>= (const Indexmatrix &A, Integer d) |
returns a matrix having elements (i,j)=Integer(A(i,j)>=d) for all i,j | |
Indexmatrix | operator== (const Indexmatrix &A, Integer d) |
returns a matrix having elements (i,j)=Integer(A(i,j)==d) for all i,j | |
Indexmatrix | operator!= (const Indexmatrix &A, Integer d) |
returns a matrix having elements (i,j)=Integer(A(i,j)!=d) for all i,j | |
Indexmatrix | operator< (Integer d, const Indexmatrix &A) |
returns a matrix having elements (i,j)=Integer(d<A(i,j)) for all i,j | |
Indexmatrix | operator> (Integer d, const Indexmatrix &A) |
returns a matrix having elements (i,j)=Integer(d>A(i,j)) for all i,j | |
Indexmatrix | operator<= (Integer d, const Indexmatrix &A) |
returns a matrix having elements (i,j)=Integer(d<=A(i,j)) for all i,j | |
Indexmatrix | operator>= (Integer d, const Indexmatrix &A) |
returns a matrix having elements (i,j)=Integer(d>=A(i,j)) for all i,j | |
Indexmatrix | operator== (Integer d, const Indexmatrix &A) |
returns a matrix having elements (i,j)=Integer(d==A(i,j)) for all i,j | |
Indexmatrix | operator!= (Integer d, const Indexmatrix &A) |
returns a matrix having elements (i,j)=Integer(d!=A(i,j)) for all i,j | |
bool | equal (const Indexmatrix &A, const Indexmatrix &b) |
returns true if both matrices have the same size and the same elements | |
Indexmatrix | minrows (const Indexmatrix &A) |
returns a row vector holding in each column the minimum over all rows in this column | |
Indexmatrix | mincols (const Indexmatrix &A) |
returns a column vector holding in each row the minimum over all columns in this row | |
Integer | min (const Indexmatrix &A, Integer *iindex, Integer *jindex) |
returns the minimum value over all elements of the matrix | |
Indexmatrix | maxrows (const Indexmatrix &A) |
returns a row vector holding in each column the maximum over all rows in this column | |
Indexmatrix | maxcols (const Indexmatrix &A) |
returns a column vector holding in each row the maximum over all columns in this row | |
Integer | max (const Indexmatrix &A, Integer *iindex, Integer *jindex) |
returns the maximum value over all elements of the matrix | |
Indexmatrix | sortindex (const Indexmatrix &vec, bool nondecreasing) |
returns an Indexmatrix ind so that vec(ind(0))<=vec(ind(1))<=...<=vec(ind(vec.dim()-1)) (vec may be rectangular, set nondecreasing=false for opposite order) | |
void | sortindex (const Indexmatrix &vec, Indexmatrix &ind, bool nondecreasing) |
sets ind so that vec(ind(0))<=vec(ind(1))<=...<=vec(ind(vec.dim()-1)) (vec may be rectangular, set nondecreasing=false for opposite order) | |
Indexmatrix | find (const Indexmatrix &A) |
returns an Indexmatrix ind so that A(ind(i)) 0<=i<ind.dim() runs through all nonzero elements of A | |
Indexmatrix | find_number (const Indexmatrix &A, Integer num) |
returns an Indexmatrix ind so that A(ind(i)) 0<=i<ind.dim() runs through all elements of A having value num | |
Input, Output (Friends) | |
std::ostream & | operator<< (std::ostream &o, const Indexmatrix &A) |
output format (all Integer values): nr nc \n A(1,1) A(1,2) ... A(1,nc) \n A(2,1) ... A(nr,nc) \n | |
std::istream & | operator>> (std::istream &i, Indexmatrix &A) |
input format (all Integer values): nr nc \n A(1,1) A(1,2) ... A(1,nc) \n A(2,1) ... A(nr,nc) \n | |
Additional Inherited Members | |
Protected Member Functions inherited from CH_Matrix_Classes::Memarrayuser | |
Memarrayuser () | |
if memarray is NULL, then a new Memarray is generated. In any case the number of users of the Memarray is incremented | |
virtual | ~Memarrayuser () |
the number of users is decremented and the Memarray memory manager is destructed, if the number is zero. | |
Static Protected Attributes inherited from CH_Matrix_Classes::Memarrayuser | |
static Memarray * | memarray |
pointer to common memory manager for all Memarrayusers, instantiated in memarray.cxx | |
Matrix class for integral values of type Integer
Internally a matrix of size nr x nc is stored in a one dimensional array of Integer variables, the elements are arranged in columnwise order (a11,a21,...,anr1,a12,a22,...).
Any matrix element can be indexed by (i,j), which internally refers to m[i+j*nr], or directly by the one dimensional index (i+j*nr). The latter view directly correspond to the vec() operator often used in the linear algebra literature, i.e., the matrix is transformed to a vector by stacking the columns on top of each other.
generate a matrix of size nr x nc but WITHOUT initializing the memory
If initializing the memory externally and CONICBUNDLE_DEBUG is defined, please use set_init() via matrix.set_init(true) in order to avoid warnings concerning improper initialization
void CH_Matrix_Classes::Indexmatrix::display | ( | std::ostream & | out, |
int | precision = 0 , |
||
int | width = 0 , |
||
int | screenwidth = 0 |
||
) | const |
displays a matrix in a pretty way for bounded screen widths; for variables of value zero default values are used.
out | output stream |
precision | not needed here, used for consistency with real valued matrices |
width | field width, default = precision+6 |
screenwidth | maximum number of characters in one output line, default = 80 |
void CH_Matrix_Classes::Indexmatrix::mfile_output | ( | std::ostream & | out, |
int | precision = 16 , |
||
int | width = 0 |
||
) | const |
outputs a matrix A in the format "[ A(0,1) ... A(0,nc-1)\n ... A(nr-1,nc-1)];\n" so that it can be read e.g. by octave as an m-file
out | output stream |
precision | number of most significant digits, default=16 |
width | field width, default = precision+6 |
resize the matrix to nr x nc elements but WITHOUT initializing the memory
If initializing the memory externally and CONICBUNDLE_DEBUG is defined, please use set_init() via matrix.set_init(true) in order to avoid warnings concerning improper initialization
|
friend |
returns x= alpha*y+beta*x, where y may be transposed (ytrans=1); if beta==0. then x is initialized to the correct size
If ytrans
If beta
If alpha