当前位置:  开发笔记 > 编程语言 > 正文

使用EIGEN库填充动态矢量

如何解决《使用EIGEN库填充动态矢量》经验,为你挑选了1个好方法。

我必须使用EIGEN在for循环中使用值填充向量。我正在尝试类似的东西...

#include  
#include 
using namespace std;
using namespace Eigen;

int main(){ 
  VectorXd s;
  for (int i=0,i<10;i++){
     s(i) = (double) i;
  }
return 0;
}

我可以编译它,但是当我运行程序时出现此错误:

动态:/usr/include/Eigen/src/Core/DenseCoeffsBase.h:425:Eigen :: DenseCoeffsBase :: Scalar&Eigen :: DenseCoeffsBase :: operator()(Eigen :: Index)[with Derived = Eigen :: Matrix; Eigen :: DenseCoeffsBase :: Scalar = double; Eigen :: Index = int]:断言`index> = 0 && index

我知道我可以使用std :: vector类轻松实现这一点,但是我想用特征值来实现,因为在那之后我必须做很多矩阵运算。

谢谢!

编辑:对于我的应用程序,我在编译时不知道向量的大小。我想找出是否有类似vector::push_back本征的类似方法。



1> Maikel..:

您忘记为向量保留空间。这与相同std::vector

尝试这个

#include 
#include 

int main()
{
  // resize to 10 elements
  auto vec = Eigen::VectorXd(10);
  for (int i = 0; i < vec.size(); ++i) {
    vec[i] = i;
  }
  std::cout << vec << '\n';
}

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有