首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MATLAB中的特征值

MATLAB中的特征值
EN

Stack Overflow用户
提问于 2010-07-20 23:43:43
回答 4查看 19.8K关注 0票数 9

在MATLAB中,当我对对称矩阵运行[V,D] = eig(a)命令时,最大的特征值(及其关联的向量)位于最后一列。但是,当我使用非对称矩阵运行它时,最大的特征值在第一列。

我正在尝试计算特征向量中心性,这需要我计算与最大特征值相关的特征向量。因此,最大的特征值出现在两个不同的地方,这使得我很难找到解决方案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-20 23:51:12

您只需在D中找到最大特征值的索引,使用函数DIAG提取主对角线,使用函数MAX获取最大特征值和出现最大特征值的索引:

代码语言:javascript
运行
复制
[V,D] = eig(a);
[maxValue,index] = max(diag(D));  %# The maximum eigenvalue and its index
maxVector = V(:,index);           %# The associated eigenvector in V

注:作为woodchips points out,你可以得到非对称矩阵的复特征值。在复数输入X上操作时,MAX函数使用复数max(abs(X))的大小。在等幅元素的情况下,使用相角max(angle(X))

票数 5
EN

Stack Overflow用户

发布于 2010-07-21 01:46:44

我通常做的是:

代码语言:javascript
运行
复制
[V D] = eig(a);
[D order] = sort(diag(D),'descend');  %# sort eigenvalues in descending order
V = V(:,order);
票数 16
EN

Stack Overflow用户

发布于 2010-07-21 03:58:23

请注意,非对称矩阵往往具有复特征值。

代码语言:javascript
运行
复制
eig(rand(7))
ans =
       3.2957              
     -0.22966 +    0.58374i
     -0.22966 -    0.58374i
     -0.38576              
      0.49064              
      0.17144 +    0.27968i
      0.17144 -    0.27968i

还要注意,eig不会显式返回已排序的特征值(尽管底层算法倾向于根据特征值的大小以近似排序的顺序生成它们),但即使您进行了排序,也需要了解排序如何在复向量上工作。

代码语言:javascript
运行
复制
sort(rand(5,1) + i*rand(5,1))
ans =
      0.42343 +    0.51539i
    0.0098208 +    0.76145i
      0.20348 +    0.88695i
      0.43595 +    0.83893i
       0.8225 +    0.91264i

当应用于复数输入时,排序作用于复数的大小。

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

https://stackoverflow.com/questions/3291770

复制
相关文章

相似问题

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