matlab 特征向量随着特征值的大小从大到小排列

 其实 MATLAB 内置的函数就有diag()可以将一个对角矩阵转化为一个向量,也可以将一个向量转化为一个对角矩阵。转换完之后对向量进行逆序排列,我看到有同学硬是写了一个冒泡排序来完成这个工作,你的数据结构老师一定非常欣慰。但是在 MATLAB 里不用从头开始,直接调用sort()函数就行了~但是在这里还有更简单的方法,wrev()函数就可以将一个向量逆序排列,fliplr()函数可以将一个矩阵左右镜像对称,所以如果想得到从大到小排列的特征值,只要这样就行了:

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

例子:

clear all;clc;close all;
A=[61.45,55.9,61.95,59,58.14,53.61,55.48,54.21,61.52,54.92];
B=[40.36,39.8,49.2,48,51.5,49.39,51.13,58.06,61,62.35];
C=[8.61,8.91,10.43,13.32,13.48,15.75,18.14,19.95,21.95,23.53];
D=[14.31,14.72,15.28,15.91,14.67,15,15.86,15.16,13.72,12.94];
E=[7.67,7.75,8.15,9.24,10.68,10.58,10.31,10,8.91,8.51];
q=[A',B',C',D',E'];
w=cov(q);
% 得到从大到小排列的特征值
[V, D] = eig(w);
lambda = wrev(diag(D));
V1 = fliplr(V)

转载:https://blog.csdn.net/robertchenguangzhi/article/details/40747285

Matlab 矩阵特征值排序问题

发布了234 篇原创文章 · 获赞 61 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/weixin_42528089/article/details/104526827