template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel>
class Eigen::Block< XprType, BlockRows, BlockCols, InnerPanel >
Expression of a fixed-size or dynamic-size block.
- Template Parameters
-
XprType | the type of the expression in which we are taking a block |
BlockRows | the number of rows of the block we are taking at compile time (optional) |
BlockCols | the number of columns of the block we are taking at compile time (optional) |
InnerPanel | is true, if the block maps to a set of rows of a row major matrix or to set of columns of a column major matrix (optional). The parameter allows to determine at compile time whether aligned access is possible on the block expression. |
This class represents an expression of either a fixed-size or dynamic-size block. It is the return type of DenseBase::block(Index,Index,Index,Index) and DenseBase::block<int,int>(Index,Index) and most of the time this is the only way it is used.
However, if you want to directly maniputate block expressions, for instance if you want to write a function returning such an expression, you will need to use this class.
Here is an example illustrating the dynamic case:
#include <iostream>
template<typename Derived>
{
}
template<typename Derived>
{
}
{
std::cout <<
"Now the matrix m is:" << std::endl <<
m << std::endl;
return 0;
}
EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL FixedBlockXpr<...,... >::Type topLeftCorner(NRowsType cRows, NColsType cCols)
Expression of a fixed-size or dynamic-size block.
Base class for all dense matrices, vectors, and expressions.
static const IdentityReturnType Identity()
The matrix class, also used for vectors and row-vectors.
Output:
4 0 0
0 4 0
Now the matrix m is:
5 0 0 0
0 5 0 0
0 0 1 0
0 0 0 1
- Note
- Even though this expression has dynamic size, in the case where XprType has fixed size, this expression inherits a fixed maximal size which means that evaluating it does not cause a dynamic memory allocation.
Here is an example illustrating the fixed-size case:
#include <iostream>
template<typename Derived>
{
}
template<typename Derived>
{
}
{
std::cout <<
"Now the matrix m is:" << std::endl <<
m << std::endl;
return 0;
}
Eigen::Block< Derived, 2, 2 > topLeft2x2Corner(Eigen::MatrixBase< Derived > &m)
Output:
4 0
0 4
Now the matrix m is:
2 0 0
0 2 0
0 0 1
- See also
- DenseBase::block(Index,Index,Index,Index), DenseBase::block(Index,Index), class VectorBlock
Definition at line 105 of file Block.h.