我有一个类需要使用Eigen Matrix作为实例变量。不幸的是,我有一个以上的大小,所以我认为我被迫使用dynamic作为大小参数;
我将实例变量声明为:
Matrix<std::complex<float>, Dynamic, Dynamic> mCSM;
在构造函数中我使用:
修复大小mCSM.resize(40, 40);
我查看调试器中的矩阵,它的大小正确,所以我觉得这很好。
我现在想要得到矩阵的特征值和特征向量,这就是我迷失的地方。
我试试
ComplexEigenSolver<Matrix<std::complex<float>, Dynamic, Dynamic>> ces;
ces.compute(mCSM);
并获得我使用的特征值和特征向量:
mEva = ces.eigenvalues();
mEve = ces.eigenvectors();
mEva和mEve都是实例变量,并且像mCSM一样构建:
Matrix<std::complex<float>, Dynamic, Dynamic> mEve;
Matrix<std::complex<float>, Dynamic, 1> mEva;
//mEve.resize(40, 40);
//mEva.resize(40);
调用mEva = ces.eigenvalues();
mEva
后,cols = 0且rows = 0;
我是否需要告诉ComplexEigenSolver
matrixSize
?这是使用动态矩阵时的正确方法吗?
我现在用以下方法检查对compute的调用是否成功:
ces.compute(mCSM);
if (ces.info() == Eigen::Success)
{
....