Eigen C++ 对列进行除法运算

问题描述 投票:0回答:1

我有一个矩阵 df,我试图按照其他 2 列的比例填充最后一列,如下所示:

df.col(0) = df.col(1).rowwise() / (df.col(1) + df.col(2));

但我收到错误:

 error: no type named ‘type’ in ‘struct Eigen::internal::promote_scalar_arg<double, Eigen::Replicate<Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, const Eigen::Block<Eigen::Matrix<double, -1, -1>, -1, 1, true>, const Eigen::Block<Eigen::Matrix<double, -1, -1>, -1, 1, true> >, -1, 1>, false>’

我不明白这里出了什么问题。请问有人知道吗?

c++ eigen
1个回答
1
投票

Eigen 区分了矩阵类型(包括向量)和数组类型。矩阵的算术运算具有矩阵语义。因此,矩阵除以向量将是矩阵乘以向量的逆运算。我想这不是你想要的。

您想要的是各个系数的划分,这意味着您需要数组语义。这样做:

df.col(0) = df.col(1).array().rowwise() / (
    df.col(1) + df.col(2)).array().transpose();
© www.soinside.com 2019 - 2024. All rights reserved.