
matlab求矩阵的特征值如下:
第败衫一步matlab求矩阵的特征值和特征向量是用eig函数,可肢禅以在命令行窗口中输入help eig,看一下eig函数用法
第二步进去matlab命令行窗口,输入x=[3 6 37 4 86 8 7],创建一个3行3列的矩阵
第三步输入[m,n]=eig(x),进行求x矩阵的特征值和特征向量,其中m矩阵的每一列值都是x矩阵的特征向量,这里已察饥腔经求出了x矩阵的3个特征向量
第四步n的对角元素值是x矩阵的特征值,输入diag(n),可以获取n矩阵的对角元素值,也就是求x矩阵的特征值
第五步按回车键之后,可以看到已经求出x矩阵的特征值了,根据需要使用
拓展说明:
在matlab中,还有个函数eigs,可以求特征向量和特征值的子集。
d = eigs(A) %求稀疏矩阵A的6个绝对值最大特征值d,d以向量形式存放。
d = eigs(A,k) %返回k个最大特征值
矩阵的特征值分解是非常重要的数学工具。在matlab中一般使用eig()函数完成矩阵特征值和特征向量的提取,其用法如下
结果如下:
显然eig()就是一般意义上的计算矩阵的特征值和特征向量
E = eig(A) 返回方阵A的所有特征值,构成列向量E。
[V,D] = eig(A) 返回方阵A的特征值和特征向量,其中特征值排满对角阵D的对角元素,对应的特征向量排列为方阵V的每一列。
而eigs()也能求取矩阵的特征值和特征向量,不过其返回的方阵幅值最大裂手蠢的6个特征值和特征向量,用法和eig()类似。不过eigs()通过迭代的方式来求解特征值,所以其在加快运算速度的同时降低了准确度。另外,一般eigs()处理的大型稀疏矩阵。
[V,D] = eigs(A) 返回方阵A的前6个最大肆陪特征特征值和特征向量。
[V,D] = eigs(A,k) 返回前k个最大特征值和特征向量。
一般情况下,eig()和eigs()返回的特征值是从大到小排列,然而这并不是一定的。经过测试,两者的特征值排序都可能为乱序,所以,在对顺序有要求的情况下,需要通过sort()函数来自动排序。
如下
按特征值大小排序结果如下:
John D'Errico设计了一个eigenshuffle.m函数能够得到排序后的特征值和特征向量。该方法排序方式为特征值大小降序排列薯桐。
速度测试:
结果:
显然eigenshuffle函数的速度比传统方法略低。
参考: https://cn.mathworks.com/matlabcentral/fileexchange/22885-eigenshuffle
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)