У меня есть этот фрагмент кода на сайте документации Eigen о нарезке и извлечении:
#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 (она работала здесь ), однако, согласно этот ответ у меня есть: EIGEN_WORLD_VERSION 3
EIGEN_MAJOR_VERSION 3
EIGEN_MINOR_VERSION 7
, который, как я считаю, является самым последним.
Что касается установки, я скопировал папку Eigen
в расположение проектаи предоставил путь (флаг -I) к на одну папку выше для компилятора g ++. Сама библиотека, кажется, работает хорошо;например, этот код (из предоставленных примеров) работает нормально:
#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;
}