【问题标题】:Eigen vector matrix right division issue特征向量矩阵右除问题
【发布时间】:2015-04-26 12:38:01
【问题描述】:

我正在尝试在 C++ 中对向量/矩阵执行右除法,就像在 matlab 中使用 / 运算符所做的那样。 更具体地说,我使用的是 eigen,我尝试进行除法的代码 sn-p 如下:

#include <Eigen/Dense>
// Do stuff
// ...
Vector3d instance;
Vector3d mu;
Matrix3d covar;
int dimensionality;
// do stuff initialize here
// Calculate cholesky decomposition
Eigen::Matrix3d normTransform(dimensionality, dimensionality);
Eigen::LLT<Eigen::Matrix3d> cholSolver(covar);
if (cholSolver.info()==Eigen::Success) 
    normTransform = cholSolver.matrixL();
else {
Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> eigenSolver(covar);
normTransform = eigenSolver.eigenvectors()
               * eigenSolver.eigenvalues().cwiseSqrt().asDiagonal();
}
RowVector3d difference = instance - mu;

difference.transpose().array() * normTransform.inverse().array();
//YOU_MIXED MATRIXES OF DIFFERENT SIZES
difference.array() * normTransform.inverse().array();
//YOU_MIXED MATRIXES OF DIFFERENT SIZES
difference.array() / normTransform.array();
//YOU_MIXED MATRIXES OF DIFFERENT SIZES
etc..

Row 向量是一个 3X1 向量,normTransform 是一个 3X3 矩阵。 我无法理解应该如何执行操作。

任何线索我做错了什么?

谢谢。

全景。

【问题讨论】:

  • 已修复。显然我想得太复杂了。一个简单的 RowVector3d adsf = 差异 * normTransform.inverse();成功了
  • 您介意将评论改写为answer吗?

标签: c++ matrix vector division eigen


【解决方案1】:

在 Avi 的建议下,我将我的评论作为答案,以便问题结束。 修复。显然我想得太复杂了。一个简单的

RowVector3d adsf = difference * normTransform.inverse(); 

成功了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2018-10-12
    • 2011-09-29
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多