首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EJML求矩阵特征向量的实数

EJML求矩阵特征向量的实数
EN

Stack Overflow用户
提问于 2014-09-23 13:19:40
回答 1查看 898关注 0票数 1

为了能够进行cholesky分解,我试图将非正定矩阵转化为正定矩阵。使用EJML,我认为它是一个很好的库,我在试图获取矩阵的特征向量时遇到了麻烦。

对于存在虚值的每个特征向量,EJML返回一个空值。它不提供任何功能(至少不是一个明显的功能)来提取真正的值,不像JBlas这样的其他java库。

根据EJML (这里

getEigenVector(int指数)

用于检索实值特征向量。如果特征向量与复特征值相关联,则返回null。

参数:

特征值特征向量对的指数-指数。

返回:

如果相关的特征值是实的,则返回一个特征向量,否则为null。

为了重现我的问题,请考虑以下算法:

代码语言:javascript
复制
DenseMatrix64F origMatrix = RandomMatrices.createRandom(size, size, -2, 2, rand);

Original Matrix (non positive definite):

0.543  -1.405   1.580  
1.227   1.686  -0.064  
1.080  -1.689   0.645 

EigenDecomposition<DenseMatrix64F> eig = DecompositionFactory.eig(size, true);
eig.decompose(origMatrix);

int eigValNum = eig.getNumberOfEigenvalues();  

for(int i = 0; i < eigValNum; i++){
    DenseMatrix64F eigMat = eig.getEigenVector(i);
    if(eigMat != null){
        //Store all vectors inside a matrix
    }
}

Eigenvector Matrix:

0.000   0.000   0.573  
0.000   0.000  -0.299  
0.000   0.000  -0.763  

据我所知,特征向量矩阵上的前两列是空的,因为存在一个虚值,这使得EJML返回一个空值。我需要一种方法或技术,使我能够在不失去整个过程中的所有向量的情况下,对想象的值进行边缘处理,并提取真实的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-25 12:25:37

EJML不支持复杂的特征向量。要计算复矩阵的复特征向量,必须提供复特征值分解,这是EJML所不提供的。您可以在其网站上提出功能请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25996202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档