首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中计算特征值与Matlab中的方法(顺序)相同

在python中计算特征值与Matlab中的方法(顺序)相同
EN

Stack Overflow用户
提问于 2018-07-23 00:22:01
回答 1查看 296关注 0票数 -1

这是Matlab代码,它返回V中的特征向量和D中的特征值。假设C是9*9矩阵,那么V是9*9矩阵,D是9*9对角线。矩阵。

代码语言:javascript
复制
[V,D] = eig(C);

我想要在Python中做同样的事情,并且顺序与Matlab相同。我使用的是以下代码:

代码语言:javascript
复制
[V1, D] = np.linalg.eig(C)    
V = np.zeros((9,9))

for i in range(9):
    V[i][i] = V1[i]

(假设V在for循环中)

这段代码给出了V1中的特征值和D中的特征向量。我将V1改为V,得到了一个对角的9*9矩阵。

但问题是,我希望特征值和向量的顺序与Matlab相同,这在python中是得不到的。请帮助我以与Matlab相同的顺序获取这些值。

参见下面的链接,了解Matlab和python之间的值差异。https://drive.google.com/drive/folders/1zjhbKH0q_XXbBziZhfpL1-qS3B5oDuMb

EN

回答 1

Stack Overflow用户

发布于 2018-07-23 04:03:23

Matlab将特征值按升序输出到D矩阵的对角元素(即最小特征值为D(1,1),最大特征值为D(9,9))。

Python不遵循这种约定,输出(特征值和特征向量)必须按如下方式排序;

代码语言:javascript
复制
ind = np.argsort(V1);
V1 = V1[ind];
D = D[:,ind];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51467026

复制
相关文章

相似问题

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