Eigen::Reshaped< XprType, Rows, Cols, Order > Class Template Reference

Expression of a fixed-size or dynamic-size reshape. More...

#include <Reshaped.h>

+ Inheritance diagram for Eigen::Reshaped< XprType, Rows, Cols, Order >:

Public Types

typedef Impl Base
 

Public Member Functions

EIGEN_DEVICE_FUNC Reshaped (XprType &xpr)
 
EIGEN_DEVICE_FUNC Reshaped (XprType &xpr, Index reshapeRows, Index reshapeCols)
 

Private Types

typedef ReshapedImpl< XprType, Rows, Cols, Order, typename internal::traits< XprType >::StorageKind > Impl
 

Detailed Description

template<typename XprType, int Rows, int Cols, int Order>
class Eigen::Reshaped< XprType, Rows, Cols, Order >

Expression of a fixed-size or dynamic-size reshape.

Template Parameters
XprTypethe type of the expression in which we are taking a reshape
Rowsthe number of rows of the reshape we are taking at compile time (optional)
Colsthe number of columns of the reshape we are taking at compile time (optional)
Ordercan be ColMajor or RowMajor, default is ColMajor.

This class represents an expression of either a fixed-size or dynamic-size reshape. It is the return type of DenseBase::reshaped(NRowsType,NColsType) and most of the time this is the only way it is used.

If you want to directly manipulate reshaped expressions, for instance if you want to write a function returning such an expression, it is advised to use the auto keyword for such use cases.

Here is an example illustrating the dynamic case:

#include <Eigen/Core>
#include <iostream>
template <typename Derived>
}
int main(int, char**) {
Eigen::MatrixXd m(3, 4);
m << 1, 4, 7, 10, 2, 5, 8, 11, 3, 6, 9, 12;
std::cout << m << std::endl;
std::cout << "Matrix m is:" << std::endl << m << std::endl;
std::cout << "Matrix n is:" << std::endl << n << std::endl;
}
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
int main(int argc, char *argv[])
Definition: T_protectiveWall.cpp:194
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:52
A matrix or vector expression mapping an existing expression.
Definition: Ref.h:264
Expression of a fixed-size or dynamic-size reshape.
Definition: Reshaped.h:99
Eigen::Reshaped< Derived, 4, 2 > reshape_helper(Eigen::MatrixBase< Derived > &m)
Definition: class_FixedReshaped.cpp:5
int * m
Definition: level2_cplx_impl.h:294

Output:

Here is an example illustrating the fixed-size case:

#include <Eigen/Core>
#include <iostream>
template <typename Derived>
return Eigen::Reshaped<Derived, 4, 2>(m.derived());
}
int main(int, char**) {
Eigen::MatrixXd m(2, 4);
m << 1, 2, 3, 4, 5, 6, 7, 8;
Eigen::MatrixXd n = reshape_helper(m);
std::cout << "matrix m is:" << std::endl << m << std::endl;
std::cout << "matrix n is:" << std::endl << n << std::endl;
return 0;
}

Output:

See also
DenseBase::reshaped(NRowsType,NColsType)

Member Typedef Documentation

◆ Base

template<typename XprType , int Rows, int Cols, int Order>
typedef Impl Eigen::Reshaped< XprType, Rows, Cols, Order >::Base

◆ Impl

template<typename XprType , int Rows, int Cols, int Order>
typedef ReshapedImpl<XprType, Rows, Cols, Order, typename internal::traits<XprType>::StorageKind> Eigen::Reshaped< XprType, Rows, Cols, Order >::Impl
private

Constructor & Destructor Documentation

◆ Reshaped() [1/2]

template<typename XprType , int Rows, int Cols, int Order>
EIGEN_DEVICE_FUNC Eigen::Reshaped< XprType, Rows, Cols, Order >::Reshaped ( XprType xpr)
inline

Fixed-size constructor

110  : Impl(xpr) {
111  EIGEN_STATIC_ASSERT(RowsAtCompileTime != Dynamic && ColsAtCompileTime != Dynamic,
112  THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE)
113  eigen_assert(Rows * Cols == xpr.rows() * xpr.cols());
114  }
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STATIC_ASSERT(X, MSG)
Definition: StaticAssert.h:26
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: CwiseBinaryOp.h:116
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: CwiseBinaryOp.h:111
ReshapedImpl< XprType, Rows, Cols, Order, typename internal::traits< XprType >::StorageKind > Impl
Definition: Reshaped.h:100
const int Dynamic
Definition: Constants.h:25

References Eigen::Dynamic, eigen_assert, and EIGEN_STATIC_ASSERT.

◆ Reshaped() [2/2]

template<typename XprType , int Rows, int Cols, int Order>
EIGEN_DEVICE_FUNC Eigen::Reshaped< XprType, Rows, Cols, Order >::Reshaped ( XprType xpr,
Index  reshapeRows,
Index  reshapeCols 
)
inline

Dynamic-size constructor

119  : Impl(xpr, reshapeRows, reshapeCols) {
120  eigen_assert((RowsAtCompileTime == Dynamic || RowsAtCompileTime == reshapeRows) &&
121  (ColsAtCompileTime == Dynamic || ColsAtCompileTime == reshapeCols));
122  eigen_assert(reshapeRows * reshapeCols == xpr.rows() * xpr.cols());
123  }

References Eigen::CwiseBinaryOp< BinaryOp, LhsType, RhsType >::cols(), Eigen::Dynamic, eigen_assert, and Eigen::CwiseBinaryOp< BinaryOp, LhsType, RhsType >::rows().


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