Compounds | |
| class | Multiply |
| Base class for a general Multiply block. More... | |
| class | MultiplyTM |
| Matrix Multiply implementation block. More... | |
| class | SquareTM |
| Calculate the Product of a Matrix with itself. More... | |
| class | MultiplyInvTM |
| Matrix inversion and multiplication block, i.e. the solution of a linear equation system. More... | |
| class | CalcCapacity |
| class | CalcMax |
| class | InvertTM |
| Inversion of the input samples when sample are a matrix. More... | |
| class | ChannelEstim |
| class | EstimSingleCarrier |
| class | EstimOFDM |
| class | Equalizer |
| class | EqualizerZF |
| ZF Equalizer, i.e. Matrix inversion and multiplication block, i.e. the solution of a linear equation system. More... | |
| class | EqualizerMMSE |
| MMSE Equalizer, i.e. Matrix inversion and multiplication block, i.e. the solution of a linear equation system. More... | |
| class | EqualizerMRC |
| Maximum Ratio-Combining Equalizer,. More... | |
| class | EqualizerMRCSwitch |
| Maximum Ratio-Combining Equalizer,. More... | |
| class | FadingMIMOChannel |
| MIMOChannel for statistical fading model. More... | |
| class | CmplFadingMIMOChannel |
| class | MSequenceBase |
| Base class for implementing access to a sequence. More... | |
| class | MSequence |
| Base class for implementing access to a sequence. More... | |
| class | MSequenceStorage |
| Implementation of a sequence. More... | |
| class | MSequenceAccess |
| Implementation of a shallow copy of a sequence. More... | |
| class | MSeqAttrT |
| class | MFreqSeqAttrT |
| class | MTimeSeqAttrT |
| class | VSeqAttrT |
| class | VTimeSeqAttrT |
| class | MaxEntropyChannel |
| class | MIMOChannel |
| class | PerfectMIMOChannel |
| class | AWGNMIMOChannel |
| class | AntennaArray |
| Abstract base class that describes the geometry of the antenna array. More... | |
| class | UniformLinearLambdaHalf |
| class | UniformCircularLambdaHalf |
| class | NonUniform |
| class | Decoder |
| Abstract base class for a MIMO symbol decoder. More... | |
| class | SpatialMuxDecZF |
| class | SpatialMuxDecMMSE |
| class | STBCAlamoutiDec |
| class | SVDDec |
| class | Encoder |
| Abstract base class for a MIMO symbol encoder. More... | |
| class | SpatialMuxEnc |
| class | STBCAlamoutiEnc |
| class | SVDEnc |
| class | LsdDecoder |
| class | LsdEncoder |
| class | Multiplexer |
| Base class for a general Multiplexer/Demultiplexer. More... | |
| class | MultiplexerT |
| Multiplexer. More... | |
| class | MultiplexerT< CMatrixSeq > |
| class | ToVector |
| class | FromVector |
| class | FromDiag |
| class | FromMat |
| class | Vectorize |
| class | PathParam |
| class | WSSUSChannel |
| class | WSSUSChannelJakesUniform |
| class | WSSUSChannelExpDelay |
| class | WSSUSChannelBU |
| class | WSSUSChannelHT |
| class | WSSUSChannelScattering |
| class | WSSUSChannelFreqTimeCorr |
| class | WSSUSChannelRA |
| WSSUS channel for a rural area (COST). More... | |
| class | WSSUSChannelTU |
| class | FileMimoChannel |
Complex Matrix operations | |
| int | real_size (const CMatrix &, int complex_size) |
| const Complex & | c_assign (CMatrix &A, int i, int j, const Complex &c) |
| Complex | c_access (const CMatrix &A, int i, int j) |
| std::ostream & | c_print (std::ostream &s, const CMatrix &G) |
| int | c_size (const CMatrix &A, int dim) |
| CMatrix | c_eye (int i) |
| CMatrix | c_zeros (int i, int j) |
| CMatrix | c_ones (int i, int j) |
| const Complex & | c_add_s (CMatrix &A, int i, int j, const Complex &c) |
| simth::Complex | c_det (const CMatrix &A) |
Real-valued Matrix operations | |
| Matrix | eye (int i) |
| Matrix | zeros (int i, int j) |
| Matrix | ones (int i, int j) |
| double | det (const Matrix &A) |
Pseudo-complex Vector operations | |
| const Complex & | c_assign (CVector &A, int i, const Complex &c) |
| Complex | c_access (const CVector &A, int i) |
| std::ostream & | c_print (std::ostream &s, const CVector &G) |
| int | c_size (const CVector &A) |
| const Complex & | c_add_s (CVector &a, int i, const Complex &c) |
| CVector | c_ones (int i) |
| CVector | c_zeros (int i) |
| Vector | zeros (int i) |
Blas routines | |
| All of these are originally defined inside the Blas++ headers. But there, they are (of course) only defined for real-valued vectors. Here we add versions that can deal with our pseudo-complex vectors and matrices and also Complex numbers. | |
| void | Blas_Add_Mult (CVector &dy, const Complex &c, const CVector &dx) |
| void | Blas_Mult (CVector &dy, const Complex &c, const CVector &dx) |
| void | Blas_Scale (const Complex &c, CVector &dx) |
| Complex | Blas_Dot_Prod (const CVector &dx, const CVector &dy) |
| void | Blas_R1_Update (CMatrix &A, const CVector &dx, const CVector &dy, const Complex &alpha) |
| double | Blas_NormF (const CMatrix &A) |
| void | Mat_Add_Norm (Matrix &A, const CMatrix &B) |
| double | Mat_Norm1 (const Matrix &A) |
Typedefs | |
| typedef LaComplex | Complex |
| We need a special complex type here. It has the necessary conversion operators to everything else. | |
| typedef LaGenMatDouble | Matrix |
| Matrix of real double values. | |
| typedef LaVectorDouble | Vector |
| Vector of real double values. | |
| typedef LaGenMatComplex | CMatrix |
| Matrix of complex double values. | |
| typedef LaVectorComplex | CVector |
| Vector of complex double values. | |
| typedef MSequence< CMatrix, MSeqAttrT< CMatrix > > | CMatrixSeq |
| typedef MSequence< CMatrix, MFreqSeqAttrT< CMatrix > > | MatrixFreqSignal |
| typedef MSequence< CVector, VSeqAttrT< CVector > > | CVectorSeq |
| typedef MSequence< CVector, VTimeSeqAttrT< CVector > > | VectorTimeSignal |
| typedef MSequence< CMatrix, MTimeSeqAttrT< CMatrix > > | MatrixTimeSignal |
Functions | |
| std::ostream & | operator<< (std::ostream &os, const MIMOChannel &cha) |
| std::ostream & | operator<< (std::ostream &os, const Decoder &enc) |
| std::ostream & | operator<< (std::ostream &os, const Encoder &enc) |
Variables | |
| const double | DELAY_THRESHOLD = 0.001 |
The matrix and vector types appear for complex and real (double) values.
Historical note: Until 2004-01-14, we used a 'pseudo-complex matrix' which in fact was a real-valued matrix of double the size. This was the reason why we invented the c_access and c_assign functions.
|
|
We need a special complex type here. It has the necessary conversion operators to everything else.
|
|
|
Matrix of real double values.
|
|
|
Vector of real double values.
|
|
|
Matrix of complex double values. This is a matrix of complex (double) values. The row and column indices for accessing elements start from zero, different from what you would write in mathematical notation. This means you have
but for accessing the element More (but sometimes outdated) documentation can be found in the Lapackpp header files. Historical note: Until 2004-01-14, we used a 'pseudo-complex matrix' which in fact was a real-valued matrix of double the size. This was the reason why we invented the c_access and c_assign functions. |
|
|
Vector of complex double values. This is a vector of complex (double) values. The element indices start from zero, different from what you would write in mathematical notation. This means you have
but for accessing the element More (but sometimes outdated) documentation can be found in the Lapackpp header files. Historical note: Until 2004-01-14, we used a 'pseudo-complex vector' which in fact was a real-valued vector of double the size. This was the reason why we invented the c_access and c_assign functions. |
|
|
Sequence of matrices of scalar complex doubles ('complex values'). |
|
|
Frequency sequence with matrices of scalar complex doubles ('complex values'). |
|
|
Sequence of vectors of scalar complex doubles ('complex values'). |
|
|
Time sequence with vectors of scalar complex doubles ('complex values'). |
|
|
Time sequence with matrices of scalar complex doubles ('complex values'). |
|
||||||||||||
|
DEPRECATED. Returns the actual storage size for any given complex_size of the pseudo-complex Matrix type. This function has no effect any longer -- it simply returns its argument. Historical note: This function used to be necessary until 2004-01-14, when 'pseudo-complex matrices' were used instead of native complex matrices. After that date, this project uses natively complex matrices and this function now is no longer necessary.
|
|
||||||||||||||||||||
|
Assigns a complex value to an element of the given pseudo-complex matrix A. Even though this function is not strictly necessary nowadays, it might still be useful in order to have the correct type conversions taking place. Historical note: This function used to be necessary until 2004-01-14, when 'pseudo-complex matrices' were used instead of native complex matrices. After that date, this project uses natively complex matrices and this function now is no longer necessary.
|
|
||||||||||||||||
|
Returns a complex element of the pseudo-complex matrix A. Even though this function is not strictly necessary nowadays, it might still be useful in order to have the correct type conversions taking place. Historical note: This function used to be necessary until 2004-01-14, when 'pseudo-complex matrices' were used instead of native complex matrices. After that date, this project uses natively complex matrices and this function now is no longer necessary.
|
|
||||||||||||
|
DEPRECATED. Print the pseudo-complex matrices. |
|
||||||||||||
|
DEPRECATED. Returns the pseudo-complex size of the pseudo-complex matrix. Historical note: This function used to be necessary until 2004-01-14, when 'pseudo-complex matrices' were used instead of native complex matrices. After that date, this project uses natively complex matrices and this function now is no longer necessary.
|
|
|
DEPRECATED. Returns a newly created identity matrix, with pseudo-complex size i x i. |
|
||||||||||||
|
Returns a newly created matrix of zeros, with pseudo-complex size i x j. |
|
||||||||||||
|
Returns a newly created matrix of ones, with pseudo-complex size i x j. |
|
||||||||||||||||||||
|
Add a complex scalar to a matrix component. Even though this function is not strictly necessary nowadays, it might still be useful in order to have the correct type conversions taking place. Historical note: This function used to be necessary until 2004-01-14, when 'pseudo-complex matrices' were used instead of native complex matrices. After that date, this project uses natively complex matrices and this function now is no longer necessary.
|
|
|
Returns the complex determinant of the complex square matrix A. This algorithm calculated the LU factorization and multiplies its diagonal. |
|
|
Returns a newly created identity matrix (square), with size i x i |
|
||||||||||||
|
Returns a newly created matrix of zeros, with size i x j. |
|
||||||||||||
|
Returns a newly created matrix of ones, with size i x j. |
|
|
Returns the determinant of the square matrix A. This algorithm calculated the LU factorization and multiplies its diagonal. |
|
||||||||||||||||
|
Assigns a complex value to an element of the given pseudo-complex vector A Even though this function is not strictly necessary nowadays, it might still be useful in order to have the correct type conversions taking place. Historical note: This function used to be necessary until 2004-01-14, when 'pseudo-complex matrices' were used instead of native complex matrices. After that date, this project uses natively complex matrices and this function now is no longer necessary.
|
|
||||||||||||
|
Returns a complex element of the pseudo-complex vector A. Even though this function is not strictly necessary nowadays, it might still be useful in order to have the correct type conversions taking place. Historical note: This function used to be necessary until 2004-01-14, when 'pseudo-complex matrices' were used instead of native complex matrices. After that date, this project uses natively complex matrices and this function now is no longer necessary.
|
|
||||||||||||
|
DEPRECATED. Print the pseudo-complex vector. |
|
|
DEPRECATED. Returns the pseudo-complex size of the pseudo-complex vector. |
|
||||||||||||||||
|
Add a complex scalar to a vector component. Even though this function is not strictly necessary nowadays, it might still be useful in order to have the correct type conversions taking place. Historical note: This function used to be necessary until 2004-01-14, when 'pseudo-complex matrices' were used instead of native complex matrices. After that date, this project uses natively complex matrices and this function now is no longer necessary.
|
|
|
DEPRECATED. Returns a newly created vector of ones, with pseudo-complex size i x j. |
|
|
DEPRECATED. Returns a newly created vector of zeros, with pseudo-complex size i x j. |
|
|
Returns a newly created vector of zeros, with size i x j. |
|
||||||||||||||||
|
Combined vector scaling and addition: dy = dy + c * dx |
|
||||||||||||||||
|
Combined vector scaling: dy = c * dx |
|
||||||||||||
|
Vector scaling: dx = c * dx |
|
||||||||||||
|
Returns the dot product of two vectors x and y, which is x'*y. Note: For complex vectors this is no longer commutative, but rather complex conjugate commutative. |
|
||||||||||||||||||||
|
Perform the rank 1 operation A := alpha*dx*dy' + A Note: the vector dy' is the _conjugate_ transposed of dy. |
|
|
Returns the squared (!) Frobenius-Norm of matrix A: sum |h_ij|^2 over all i,j |
|
||||||||||||
|
Calculate the std::norm of each element of B and add it to the respective element of the matrix A. B is a *complex* matrix, whereas A is a real-valued (nonnegative) matrix. |
|
|
Calculate the sum over all matrix elements of A. |
|
||||||||||||
|
|
|
||||||||||||
|
|
|
||||||||||||
|
|
|
|
|
1.3.2