gpt4 book ai didi

c++ - 特征向量对数错误不完整类型的使用无效

转载 作者:太空狗 更新时间:2023-10-29 20:02:14 24 4
gpt4 key购买 nike

我正在尝试使用 Eigen 库计算 vector 的元素自然对数,这是我的代码:

#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;
}

关于c++ - 特征向量对数错误不完整类型的使用无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44651097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com