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 矩陣特徵值排序問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章