Я новичок в Eigen, и я хотел бы нормализовать матрицу по строкам, поэтому мой код выглядит так:
int buf[9];
for (int i{0}; i < 9; ++i) {
buf[i] = i;
}
m = Map<MatrixXi>(buf, 3,3);
MatrixXi mean = m.colwise().mean();
VectorXi m2 = Map<VectorXi>(mean.data(), mean.cols());
m.rowwise() -= m2;
Это не сработает, поскольку m2
интерпретируется как вертикальное, что является причиной этого?
Кстати, я только что обнаружил, что не мог избежать создания mean
матрицы, которую, я думаю, я мог бы:
// this works
MatrixXi mean = m.colwise().mean();
VectorXi m2 = Map<VectorXi>(mean.data(), mean.cols());
// this cannot pass the compilation check
VectorXi m2 = Map<VectorXi>(m.colwise().mean().data(), m.cols());
Что может быть причиной этого тогда?