我必须使用EIGEN在for循环中使用值填充向量。我正在尝试类似的东西...
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main(){
VectorXd s;
for (int i=0,i<10;i++){
s(i) = (double) i;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我可以编译它,但是当我运行程序时出现此错误:
动态:/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 <size()'失败。阿布布罗兴
我知道我可以使用std :: vector类轻松实现这一点,但是我想用特征值来实现,因为在那之后我必须做很多矩阵运算。
谢谢!
编辑:对于我的应用程序,我在编译时不知道向量的大小。我想找出是否有类似vector::push_back本征的类似方法。
您忘记为向量保留空间。这与相同std::vector。
尝试这个
#include <Eigen/Dense>
#include <iostream>
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';
}
Run Code Online (Sandbox Code Playgroud)