计算复杂动态矩阵的特征值和特征向量

时间:2017-05-19 21:37:31

标签: c++ eigen

我有一个类需要使用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)
{
....

0 个答案:

没有答案
相关问题