我使用了Evd&lt;&gt; MathNet Numerics类获取矩阵的特征向量但结果是Vector<Complex>
类型,我无法将其转换为Vector<double>
,这是我操作所需要的。
这就是我得到特征向量的方法:
DenseMatrix processedData = someData;
Evd<> eigen = processedData.evd();
Vector<Complex> eigenvector = (Vector<Complex>)eigen.EigenValues;
当我尝试选择“Vector<double>
”时,程序不会接受它。
有没有办法在Vector<double>
?
注意:之前我曾问过这个问题,但忽略了格式化我的代码,因此<double>
没有出现,所以答案不是我想要的。
答案 0 :(得分:0)
NxN实矩阵必然具有N个复特征值,如果N是奇数,其中1到N的任何一个都是实数,如果N是偶数,则0到N实数。
创建一个(可能更小的)Vector<double>
,其中只包含复特征值向量中的实特征值:
DenseVector<double>
。(或者你可以创建一个相同维度的SparseVector<double>
,只在与真实特征值对应的位置创建值,如果这样更有用。我不知道你想用什么做什么本征值。)