matlab - 寻找对应于最小特征值的特征向量

标签 matlab

我想找到矩阵 U 的最小幅度的特征值的相应特征向量。最简单的方法是什么?

目前我正在使用该算法

[evecs, D] = eigs(U);
evals = diag(D);
smallesteig = inf;
for k = 1:length(evals)
    if (evals(k) < smallesteig)
        smallesteig = evals(k);
        vec = evecs(:, k);
    end
end

有没有更有效的方法来做到这一点?

最佳答案

对此有一个非常简单的简写: [V,D] = eigs(U,1,'SM')

如果您查看 eigs 文档,它会指出:

EIGS(A,K,SIGMA) and EIGS(A,B,K,SIGMA) return K eigenvalues. If SIGMA is:
   'LM' or 'SM' - Largest or Smallest Magnitude
For real symmetric problems, SIGMA may also be:
   'LA' or 'SA' - Largest or Smallest Algebraic
   'BE' - Both Ends, one more from high end if K is odd
For nonsymmetric or complex problems, SIGMA may also be:
   'LR' or 'SR' - Largest or Smallest Real part
   'LI' or 'SI' - Largest or Smallest Imaginary part

因此,当按 S mallest M agnitude 排序时,[V,D] = eigs(U,1,'SM') 返回 U 的 1 st 特征值的特征向量和值。

关于matlab - 寻找对应于最小特征值的特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34056426/

相关文章:

matlab - 在模块化函数上使用 fimplicit 产生杂散线

c++ - 加速 Matlab 引擎调用

arrays - 对包含奇数大小数组的结构中的每个元素求和 [MATLAB]

matlab - 具有 2 个变量的函数曲线下的阴影面积

user-interface - 如何更改 MATLAB GUIDE 图回调文件名?

MATLAB:将 3D 矩阵转换为元胞数组

arrays - 如何更有效地查找二维元胞数组中的元素?

performance - 如何快速用所有N-Ary数字填充矩阵?

c# - 如何干净地停止运行 matlab dll 函数的 .NET 线程

excel - 如何将字符串从 Excel 导入 MATLAB?