特征向量矩阵右除问题
Eigen vector matrix right division issue
我正在尝试在 c++ 中对 vector/matrix 执行右除法,就像在 matlab 中使用 / 运算符所做的那样。
更具体地说,我正在使用 eigen,我尝试进行除法的代码片段如下:
#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 矩阵。
我不知道应该如何执行该操作。
有什么线索是我做错了什么吗?
谢谢。
帕诺斯。
在Avi的建议下,我把我的评论作为答案,这样问题就关闭了。
固定它。显然我想得太复杂了。一个简单的
RowVector3d adsf = difference * normTransform.inverse();
成功了
我正在尝试在 c++ 中对 vector/matrix 执行右除法,就像在 matlab 中使用 / 运算符所做的那样。 更具体地说,我正在使用 eigen,我尝试进行除法的代码片段如下:
#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 矩阵。 我不知道应该如何执行该操作。
有什么线索是我做错了什么吗?
谢谢。
帕诺斯。
在Avi的建议下,我把我的评论作为答案,这样问题就关闭了。 固定它。显然我想得太复杂了。一个简单的
RowVector3d adsf = difference * normTransform.inverse();
成功了