"a2 = a1-a1.mean();" 获取居中数据有什么问题?

What is wrong in "a2 = a1-a1.mean();" to get centered data?

我正在使用 Eigen 3.2.4 来获取列向量中的中心数据

Eigen::Matrix<double, 4, 1> a1, a2;
a1 << 1, 2, 3, 4;
a2 = a1 - a1.mean(); // error no match for operator -

但是 gcc 给出了错误,因为 no match for operator -... 这里的错误是什么?

我纯粹是根据文档回答的,所以我可能错了但是。

Eigen 不允许 Matrix - scalar,但允许 Array - scalar

试试吧。

a2 = a1.array() - a1.mean();

或者

a2.array() = a1.array() - a1.mean();

即使这些都不起作用,希望它们能为您指明正确的方向。