特征向量对数无效使用不完整类型的错误
Error with Eigen vector logarithm invalid use of incomplete type
我正在尝试使用 Eigen 库计算向量的元素自然对数,这是我的代码:
#include <Eigen/Core>
#include <Eigen/Dense>
void function(VectorXd p, VectorXd q) {
VectorXd kld = p.cwiseQuotient(q);
kld = kld.log();
std::cout << kld << std::endl;
}
但是,当编译时
g++ -I eigen_lib -std=c++11 -march=native test_eigen.cpp -o test_eigen
我得到
test_eigen.cpp:15:23: error: invalid use of incomplete type ‘const class Eigen::MatrixLogarithmReturnValue<Eigen::Matrix<double, -1, 1> >’ kld = kld.log();
我错过了什么?
VectorXd::log()
是计算方阵的矩阵对数的MatrixBase<...>::log()
。如果你想要逐元素对数,你需要使用数组功能:
kld = kld.array().log();
// or:
kld = log(kld.array());
如果所有操作都是按元素进行的,请考虑使用 ArrayXd
而不是 VectorXd
:
void function(const Eigen::ArrayXd& p, const Eigen::ArrayXd& q) {
Eigen::ArrayXd kld = log(p/q);
std::cout << kld << std::endl;
}
要对特征对象(Matrix
或Vector
(进行元素级操作,您需要指定该操作。这是通过向Matrix
/Vector
对象添加.array()
来完成的,如下所示:
kld = kld.array().log();
请参阅本教程。
附言 MatrixLogarithmReturnValue
是矩阵函数不支持的模块的一部分。
相关文章:
- 类没有命名C++代码中的类型错误
- 不完整类型错误(E0409、E0070、E0515)
- 使用具有结构不完整类型错误的模板
- 不命名构造函数和析构函数上的类型错误
- 返回派生类型时出现协变类型错误
- 为什么此构造函数没有给出不完整的类型错误?
- 定义模板化结构的特征时出现不完整的类型错误
- 使用重载构造函数时出现不完整的类型错误
- 为什么我得到表达式必须有类类型错误?
- 输出 [left]=input[i] 行中的 c++ 代码中存在无效的类型错误
- 枚举成员不是类型错误
- 如何修复"ctypes"。参数错误:参数 2:<键入"异常.类型错误">:RaspberryPi 中的错误类型"错误
- 外部 "C" Visual Studio 2015 中的显式类型错误,DLL 测试代码
- 非默认析构函数会导致不完整的类型错误
- 为什么按引用传入会导致绑定引用类型错误
- Objective-C C++ 包装器 类型错误的不完整定义
- 输入类型错误
- 当构造函数的参数类型错误时引发异常
- 命名空间中的'bad_cast' 'std' 未命名类型错误
- C UNWORKOWN类型错误