将 Eigen::P ermutationMatrix.indices() 转换为 array/vector
Convert Eigen::PermutationMatrix.indices() to array/vector
我想将Eigen::PermutationMatrix
的公共方法indices()
的返回存储为数组(例如稍后提取一些感兴趣的值(。
我应该如何将其转换为数组(Eigen::Array
或C++ STL 向量(?
这是我尝试过的:
Eigen::FullPivLU<Eigen::MatrixXf> lu(LU_A); //LU_A is of type Eigen::MatrixXf
Eigen::ArrayXXf lins;
lins = lu.permutationP().indices().cast<int>().array(); //trows an error
错误:
In file included from /home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/Core:347:0,
from /home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/Dense:1,
from Matrice.hpp:5,
from Matrice.cpp:1:
/home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/src/Core/AssignEvaluator.h: In instantiation of ‘void Eigen::internal::call_assignment_no_alias(Dst&, const Src&, const Func&) [with Dst = Eigen::Array<float, -1, -1>; Src = Eigen::ArrayWrapper<const Eigen::Matrix<int, -1, 1> >; Func = Eigen::internal::assign_op<float, int>]’:
/home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/src/Core/AssignEvaluator.h:804:27: required from ‘void Eigen::internal::call_assignment(Dst&, const Src&, const Func&, typename Eigen::internal::enable_if<(! Eigen::internal::evaluator_assume_aliasing<Src>::value), void*>::type) [with Dst = Eigen::Array<float, -1, -1>; Src = Eigen::ArrayWrapper<const Eigen::Matrix<int, -1, 1> >; Func = Eigen::internal::assign_op<float, int>; typename Eigen::internal::enable_if<(! Eigen::internal::evaluator_assume_aliasing<Src>::value), void*>::type = void*]’
/home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/src/Core/AssignEvaluator.h:782:18: required from ‘void Eigen::internal::call_assignment(Dst&, const Src&) [with Dst = Eigen::Array<float, -1, -1>; Src = Eigen::ArrayWrapper<const Eigen::Matrix<int, -1, 1> >]’
/home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/src/Core/PlainObjectBase.h:710:32: required from ‘Derived& Eigen::PlainObjectBase<Derived>::_set(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::ArrayWrapper<const Eigen::Matrix<int, -1, 1> >; Derived = Eigen::Array<float, -1, -1>]’
/home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/src/Core/Array.h:109:24: required from ‘Eigen::Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>& Eigen::Array<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::operator=(const Eigen::DenseBase<OtherDerived>&) [with OtherDerived = Eigen::ArrayWrapper<const Eigen::Matrix<int, -1, 1> >; _Scalar = float; int _Rows = -1; int _Cols = -1; int _Options = 0; int _MaxRows = -1; int _MaxCols = -1]’
Matrice.cpp:380:58: required from here
/home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/src/Core/util/StaticAssert.h:32:40: error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY
#define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);
/home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/src/Core/util/XprHelper.h:816:3: note: in expansion of macro ‘EIGEN_STATIC_ASSERT’
EIGEN_STATIC_ASSERT((Eigen::internal::has_ReturnType<ScalarBinaryOpTraits<LHS, RHS,BINOP> >::value),
^~~~~~~~~~~~~~~~~~~
/home/ldfzor/Documents/CodeBlocks_Projects/POO_Matrice_Eigen/eigen3_3_3/Eigen/src/Core/AssignEvaluator.h:834:3: note: in expansion of macro ‘EIGEN_CHECK_BINARY_COMPATIBILIY’
EIGEN_CHECK_BINARY_COMPATIBILIY(Func,typename ActualDstTypeCleaned::Scalar,typename Src::Scalar);
您正在尝试将int
数组存储在float
数组中。只需写:
Eigen::ArrayXi lins = lu.permutationP().indices().cast<int>().array();
相关文章:
- 如何将变量内容常量转换为 std::array 的大小?
- 在C++中将算术类型转换为 std::array 的最简单方法<uint8_t>
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将 std::array<char, N> 转换为 char (&dest)[N]?
- 如何将 std::array 转换为类类型
- 在现代C++中将 std::array<std:::array<T,N>> 转换为 std::vector<T>
- 如何将 std::array<double, 100> 转换为 std::array<float, 100> ?(避免明显的样板实现)
- 我无法将'2D array whit bool'转换为"空 2D 数组布尔值"(用于生命游戏)
- 将 std::十六进制字符串转换为 std::array<T, 6>
- 将 const float* 转换为 std::array<float, ...>
- 将 Eigen::P ermutationMatrix.indices() 转换为 array/vector
- 如何将 std::array 转换为 boost::asio::buffer
- NAPI AsyncWorker:将指针数组转换为NAPI::array,而不使用大的for
- 如何将numpy nd-array转换为cffi c 数组,然后再次返回
- 将 OpenCV Mat 转换为 array(可能是 NSArray)
- 从 int 转换为 std::array<unsigned char, 1ul>::value_type 可能会改变其值
- 将 JavaScript Array.slice + 隐式扩展转换为 C++ vector
- 无法将 std::array 转换为 int?
- array:将一维数组的索引转换为多维数组的向量索引
- 无法将参数 1 从"cli::array<Type> ^"转换为"无符号短整型"