Как вычислить абсолютное значение вектора в Eigen?

Как вычислить абсолютное значение вектора в Eigen? С очевидным способом

Eigen::VectorXf v(-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0);
v.abs(); // Compute abs value.

не работает.

7

Решение

Для Eigen 3.2.1 используется p.abs(); так же, как вы бы использовали p.normalize приводит к ошибке компилятора в соответствии с

ошибка: нет члена с именем abs в ‘Eigen :: Matrix’ p.abs ();
~ ^

поэтому вектор в Eigen — это не что иное, как матричный тип. Для вычисления абсолютных значений матрицы в Eigen можно использовать p.cwiseAbs() или преобразование массива p.array().abs();, Обе эти абсолютные функции возвращают значение, а не изменяют саму переменную.

Таким образом, правильный способ сделать это будет сделать

p = p.cwiseAbs();

или же

p = p.array().abs();
14

Другие решения