Есть ли способ применить вычисление по столбцам следующим образом? (каждый столбец делится на последнюю запись столбца)
Eigen::MatrixXd A(3,5), B(3,5);
A << 1, 4, 9, 16, 25,
2, 4, 6, 8, 10,
1, 2, 3, 4, 5;
B = (A.col) / (A.bottomerows<1>).col;
и B будет:
B = 1, 2, 3, 4, 5,
2, 2, 2, 2, 2,
1, 1, 1, 1, 1;





Функции, которые вы ищете, это .hnormalized() и .homogeneous(). Оба могут быть применены .colwise() следующим образом:
Eigen::MatrixXd B = A.colwise().hnormalized().colwise().homogeneous();
Вы можете добиться того же с помощью магии .replicate(), например:
Eigen::MatrixXd B = A.array() / A.row(2).replicate(A.rows(),1).array();
(если A было ArrayXXd, вместо MatrixXd.array() писать не нужно)