Error while compiling eigen program: error: 'seq' is not a member of 'Eigen'
Error while compiling eigen program: error: 'seq' is not a member of 'Eigen'
我正在尝试在遵循算术序列的索引中索引矩阵。根据官网的Eigen教程,我应该使用Eigen::seq(firstVal, lastVal, step)来生成这个序列。调用此错误后,将弹出此线程标题中粘贴的错误。
我检查了本地 eigen 文件夹中的所有文件,寻找 'seq' 方法,但没有成功。它不在任何地方。我想这意味着某些文件丢失了,对吧?
代码是这样的。
Headers在顶部
#include <iostream>
#include <string>
#include <chrono>
#include "Eigen/Dense"
#include "Eigen/Core"
#include <cmath>
#include <random>
m1(row, Eigen::seq(some_index*m1.cols(), some_index*m1.cols() + m1.cols()-1, step))= m2.block(row, 0, 1, m2.cols());
当然,m1.cols() >> m2.cols()
错误输出:
error: 'seq' is not a member of 'Eigen'
预期的结果是从矩阵 m2 中获取行(其中 m2.cols() < m1.cols())并将行的值分配给 m1 相同行号中的某些索引.
检查官方仓库后
https://bitbucket.org/eigen/eigen/src/default/
所需函数在文件 Eigen/src/core/ArithmeticSequence.h
中,该文件包含在已在代码段中使用的一般 header Eigen/Core
中。
问题似乎是 OP 从与主仓库不同步的 third-party 仓库下载了 Eigen,并且上述文件丢失了。
我为后人添加此注释:撰写本文时最新的稳定版本是 3.3.7,于 2018 年发布(请参阅 http://eigen.tuxfamily.org/index.php?title=Main_Page),并且不包含该文件。所以,如果其他人发现同样的问题,请尝试克隆官方仓库。
所需函数在文件Eigen/src/core/ArithmeticSequence.h 中,该文件包含在通用header Eigen/Core
中。所以 #include "Eigen/Core
就足够了。 (正如@CuriouslyRecurringThoughts 指出的那样)。
但是,为了解决他回答中的困惑:ArithmeticSequences
例如 Seq
计划用于 Eigen 版本 3.4.0 所以它们不存在在此之前的版本中。当我写这篇文章时,最新的官方版本是 3.3.9 因此不支持 ArithmeticSequences
.
如果您查看 official repo,您会发现该文件也不存在 3.3.9 和更早版本。目前,它仅包含在 3.4.0-rc1
和 master
分支中。
所以回答你的问题:你很可能使用旧版本的 Eigen,你需要使用 Eigen 3.4.0-rc1
或更高版本。
我正在尝试在遵循算术序列的索引中索引矩阵。根据官网的Eigen教程,我应该使用Eigen::seq(firstVal, lastVal, step)来生成这个序列。调用此错误后,将弹出此线程标题中粘贴的错误。
我检查了本地 eigen 文件夹中的所有文件,寻找 'seq' 方法,但没有成功。它不在任何地方。我想这意味着某些文件丢失了,对吧?
代码是这样的。
Headers在顶部
#include <iostream>
#include <string>
#include <chrono>
#include "Eigen/Dense"
#include "Eigen/Core"
#include <cmath>
#include <random>
m1(row, Eigen::seq(some_index*m1.cols(), some_index*m1.cols() + m1.cols()-1, step))= m2.block(row, 0, 1, m2.cols());
当然,m1.cols() >> m2.cols()
错误输出:
error: 'seq' is not a member of 'Eigen'
预期的结果是从矩阵 m2 中获取行(其中 m2.cols() < m1.cols())并将行的值分配给 m1 相同行号中的某些索引.
检查官方仓库后
https://bitbucket.org/eigen/eigen/src/default/
所需函数在文件 Eigen/src/core/ArithmeticSequence.h
中,该文件包含在已在代码段中使用的一般 header Eigen/Core
中。
问题似乎是 OP 从与主仓库不同步的 third-party 仓库下载了 Eigen,并且上述文件丢失了。
我为后人添加此注释:撰写本文时最新的稳定版本是 3.3.7,于 2018 年发布(请参阅 http://eigen.tuxfamily.org/index.php?title=Main_Page),并且不包含该文件。所以,如果其他人发现同样的问题,请尝试克隆官方仓库。
所需函数在文件Eigen/src/core/ArithmeticSequence.h 中,该文件包含在通用header Eigen/Core
中。所以 #include "Eigen/Core
就足够了。 (正如@CuriouslyRecurringThoughts 指出的那样)。
但是,为了解决他回答中的困惑:ArithmeticSequences
例如 Seq
计划用于 Eigen 版本 3.4.0 所以它们不存在在此之前的版本中。当我写这篇文章时,最新的官方版本是 3.3.9 因此不支持 ArithmeticSequences
.
如果您查看 official repo,您会发现该文件也不存在 3.3.9 和更早版本。目前,它仅包含在 3.4.0-rc1
和 master
分支中。
所以回答你的问题:你很可能使用旧版本的 Eigen,你需要使用 Eigen 3.4.0-rc1
或更高版本。