gpt4 book ai didi

c++ - 为什么 Eigen 不解析内置符号? (所有,最后,seq,等等...)

转载 作者:行者123 更新时间:2023-11-30 04:42:31 25 4
gpt4 key购买 nike

我有这段代码来自 Eigen documentation关于切片和索引的网站:

#include <iostream>
#include <Eigen/Dense>
#include <vector>
using namespace std;
using namespace Eigen;

int main() {
std::vector<int> ind{4,2,5,5,3};
MatrixXi A = MatrixXi::Random(4,6);
cout << "Initial matrix A:\n" << A << "\n\n";
cout << "A(all,ind):\n" << A(all,ind) << "\n\n";

return 0;
}

当我尝试编译时,出现多个错误,例如:

  • all 不是 Eigen 的成员
  • all 未在此范围内声明
  • last 未在此范围内声明
  • seq 不是 Eigen
  • 的成员
  • 无法解析函数 seq
  • MatrixXi::Random 无效参数

如何修复这些错误?


看起来好像我有错误版本的 Eigen(它工作 here ),但是,根据 this答案我有:EIGEN_WORLD_VERSION 3EIGEN_MAJOR_VERSION 3EIGEN_MINOR_VERSION 7,我相信这是最新的。

就安装而言,我将 Eigen 文件夹复制到项目位置,并为 g++ 提供了一个路径(-I 标志)到它上面的一个文件夹编译器。图书馆本身似乎运作良好;例如,此代码(来自提供的示例)工作正常:

#include <iostream>
#include <Eigen/Dense>

using namespace Eigen;
using namespace std;

int main()
{
Matrix3d m = Matrix3d::Random();
m = (m + Matrix3d::Constant(1.2)) * 50;
cout << "m =" << endl << m << endl;
Vector3d v(1,2,3);

cout << "m * v =" << endl << m * v << endl;
}

最佳答案

您的问题可能是 -I g++ 选项

我怀疑你有类似的东西:

g++  ....  -I<path_to_project>/Eigen

...而它应该只是

g++  ....  -I<path_to_project>

... 即最后的 Eigen目录不应位于包含路径上。

进行此更改,然后还更改源代码,以便所有包含如下:

#include <Eigen/Dense>
#include <Eigen/Cholesky>

此外,您指的是变量 all但是你的程序没有定义它。

同时确保您至少启用了 c++11 编译器选项。


编辑:

为了完整起见,我添加了评论中出现的答案。OP问题中的文档指的是不支持符号的3.3.9版本all , last , seq .对于最新的稳定 (3.3.7) 版本 block reshape 必须使用运算符。

这里的教训是:始终检查文档版本是否与所用库的版本匹配

关于c++ - 为什么 Eigen 不解析内置符号? (所有,最后,seq,等等...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58699992/

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