关于Eigen :: MatrixXd列式计算的问题

时间:2019-04-18 23:43:54

标签: c++ eigen

是否仍然可以按以下方式应用按列计算? (每列除以该列的最后一个条目)

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;

1 个答案:

答案 0 :(得分:2)

您要寻找的功能是.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();

(如果AArrayXXd,而不是MatrixXd,则无需编写.array()