Matlab特征值和特征向量--将特征值按从大到小的顺序排列

在作业中需要求某个矩阵的特征值和特征向量,当然同学们都会使用 MATLAB 内置的函数[V, D] = eig(A),这样得到的对角矩阵 D 其对角线元素就是从小到大排列的的特征值。有的同学希望能将这个对角线元素单独抽取出来变成一个行向量或者列向量,还希望特征值从大到小排列,为了达到这个目的,大家用了各种各样的方法。其实 MATLAB 内置的函数就有diag()可以将一个对角矩阵转化为一个向量,也可以将一个向量转化为一个对角矩阵。转换完之后对向量进行逆序排列,我看到有同学硬是写了一个冒泡排序来完成这个工作,你的数据结构老师一定非常欣慰。但是在 MATLAB 里不用从头开始,直接调用sort()函数就行了~但是在这里还有更简单的方法,wrev()函数就可以将一个向量逆序排列,fliplr()函数可以将一个矩阵左右镜像对称,所以如果想得到从大到小排列的特征值,只要这样就行了:

% 得到从大到小排列的特征值
[V, D] = eig(A);
lambda = wrev(diag(D));
V = fliplr(V);

这样特征值和特征向量就都排列好了。

你可能感兴趣的:(matlab,特征分解)