【问题标题】:Eigen row of a M-N matrix multiply column of a N-M matrix in element wiseM-N 矩阵的特征行按元素乘以 N-M 矩阵的列
【发布时间】:2021-12-31 21:27:35
【问题描述】:

我有一个矩阵

A = a11  a12  a13 
    a21  a22  a23

还有另一个矩阵

B = b11  b12 
    b21  b22 
    b31  b32

如何使用 Eigen 获得以下向量?

a11 * b11 + a12 * b21 + a13 * b31
a21 * b12 + a22 * b22 + a23 * b32

【问题讨论】:

    标签: eigen matrix-multiplication


    【解决方案1】:

    你想要系数乘法,所以你必须使用数组;由于尺寸的原因,您还需要转置,最后因为您想要形状 (Mx1) 的结果,您需要逐行求和。因此,您可以得到以下信息:

    auto A = Eigen::Matrix<float, 2, 3>::Random().eval();
    auto B = Eigen::Matrix<float, 3, 2>::Random().eval();
    
    Eigen::Matrix<float, 2, 1> C = (A.array()*B.transpose().array()).rowwise().sum();
    

    【讨论】:

    • 断言失败:aLhs.rows() == aRhs.rows() && aLhs.cols() == aRhs.cols(), 文件
    • 我很抱歉@arifle 但这个 sn-p 不会产生你提到的断言。我怀疑您尝试的代码有些不同,因为我的示例中有一个小的语法错误,它甚至不应该编译(现在已修复)。因此,如果您需要帮助,请使用您实际使用的代码编辑您的问题
    • 对不起@trialNerror。我的代码中声明的两个矩阵是 Eigen::MatrixXd A, B。也许这就是问题所在? BTW,代码中其实是A和A.transpose。
    • 正如我所提到的,如果您不向我提供代码的相关部分,我将无法为您提供帮助。 Eigen 告诉您,您的矩阵类型不兼容,这不是由于我的代码。请相应地更新您的问题。您的矩阵是动态维度 (MatrixX) 不是根本原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多