Eigen::Reshaped
template<typename XprType, int Rows, int Cols, int Order>
class Eigen::Reshaped< XprType, Rows, Cols, Order >
Выражение с переформатированием фиксированного или динамического размера.
- Параметры шаблона
-
XprType тип выражения, для которого выполняется переформатирование Rows количество строк переформатированного выражения на этапе компиляции (необязательно) Cols количество столбцов переформатированного выражения на этапе компиляции (необязательно) Order может быть ColMajor или RowMajor, по умолчанию ColMajor.
Этот класс представляет выражение с переформатированием фиксированного или динамического размера. Он является возвращаемым типом DenseBase::reshaped(NRowsType,NColsType), и чаще всего используется именно таким образом.
Однако, в C++98, если вам нужно напрямую манипулировать выражениями с переформатированием, например, если вы хотите написать функцию, возвращающую такое выражение, вам потребуется использовать этот класс. В C++11 рекомендуется использовать ключевое слово auto для таких случаев.
Вот пример, демонстрирующий динамический случай:
#include <Eigen/Core> #include <iostream> using namespace std; using namespace Eigen; template<typename Derived> const Reshaped<const Derived> reshape_helper(const MatrixBase<Derived>& m, int rows, int cols) { return Reshaped<const Derived>(m.derived(), rows, cols); } int main(int, char**) { MatrixXd m(3, 4); m << 1, 4, 7, 10, 2, 5, 8, 11, 3, 6, 9, 12; cout << m << endl; Ref<const MatrixXd> n = reshape_helper(m, 2, 6); cout << "Matrix m is:" << endl << m << endl; cout << "Matrix n is:" << endl << n << endl; }
Результат:
1 4 7 10 2 5 8 11 3 6 9 12 Matrix m is: 1 4 7 10 2 5 8 11 3 6 9 12 Matrix n is: 1 3 5 7 9 11 2 4 6 8 10 12
Вот пример, демонстрирующий случай с фиксированным размером:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; template<typename Derived> Eigen::Reshaped<Derived, 4, 2> reshape_helper(MatrixBase<Derived>& m) { return Eigen::Reshaped<Derived, 4, 2>(m.derived()); } int main(int, char**) { MatrixXd m(2, 4); m << 1, 2, 3, 4, 5, 6, 7, 8; MatrixXd n = reshape_helper(m); cout << "matrix m is:" << endl << m << endl; cout << "matrix n is:" << endl << n << endl; return 0; }
Результат:
matrix m is: 1 2 3 4 5 6 7 8 matrix n is: 1 3 5 7 2 4 6 8
- См. также
- DenseBase::reshaped(NRowsType,NColsType)
Наследуется от Eigen::ReshapedImpl< XprType, Rows, Cols, Order, internal::traits< XprType >::StorageKind >.
| Reshaped (XprType &xpr) | |
| Reshaped (XprType &xpr, Index reshapeRows, Index reshapeCols) | |
Reshaped() [1/2]
| inline |
Конструктор для выражений фиксированного размера.
Reshaped() [2/2]
| inline |
Конструктор для выражений динамического размера.
Документация для этого класса была сгенерирована из следующего файла:
© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1Reshaped.html