给定一个实验向量c
和整数向量rw
,我想创建一个向量z
与元素z_i=c_i^rw_i
。我试图使用组件明智的功能pow
,但我得到一个编译器错误。Eigen:向量或矩阵分量来实现?
#include <Eigen/Core>
typedef Eigen::VectorXd RealVector;
typedef Eigen::VectorXi IntVector; // dynamically-sized vector of integers
RealVector c; c << 2, 3, 4, 5;
IntVector rw; rw << 6, 7, 8, 9;
RealVector z = c.pow(rw); **compile error**
编译器错误是
error C2664: 'const Eigen::MatrixComplexPowerReturnValue<Derived> Eigen::MatrixBase<Derived>::pow(const std::complex<double> &) const': cannot convert argument 1 from 'IntVector' to 'const double &'
with
[
Derived=Eigen::Matrix<double,-1,1,0,-1,1>
]
c:\auc\sedanal\LammSolve.h(117): note: Reason: cannot convert from 'IntVector' to 'const double'
c:\auc\sedanal\LammSolve.h(117): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
什么是错的代码?并且,假设它可以被修复,当c是一个实数矩阵而不是一个向量时,我将如何进行相同的操作,以便为c的所有元素计算c_ij^b_i
?
Compiler是Visual Studio中2015年,在64位运行Windows 7
我是依靠“系数明智的数学函数目录”(https://eigen.tuxfamily.org/dox/group__CoeffwiseMathFunctions.html),它说电源功能 a.pow(b); pow(a,二); \t增加一个数字给定功率($ a_i^{b_i} $) a和b可以是数组或标量。 \t使用std :: pow; pow(a [i],b [i]); (加整数类型的内建函数) – Woody20