簡體   English   中英

特征向量矩陣右划分問題

[英]Eigen vector matrix right division issue

我正在嘗試在c / ++中對向量/矩陣執行右除法,就像在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..

行向量是3X1向量,normTransform是3X3矩陣。 我無法理解應該如何執行該操作。

任何提示我在做什么錯?

謝謝。

Panos。

在提出Avi的建議后,我以評論為答,以使問題得以解決。 修復。 顯然我當時想的太復雜了。 一個簡單的

RowVector3d adsf = difference * normTransform.inverse(); 

做到了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM