一 matlab中eig函数常用的操作
(1) E=eig(A):求矩阵A的全部特征值,构成向量E。
想求最大特征值用:max(eig(A))就好了。
(2) [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成
V的列向量。
(3) [V,D]=eig(A,'nobalance'):与第2种格式类似,但第2种格式中先对A作相似
变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。
(4) E=eig(A,B):由eig(A,B)返回N×N阶方阵A和B的N个广义特征值,构成向量E
。
(5) [V,D]=eig(A,B):由eig(A,B)返回方阵A和B的N个广义特征值,构成N×N阶对
角阵D,其对角线上的N个元素即为相应的广义特征值,同时将返回相应的特征向
量构成N×N阶满秩矩阵,且满足AV=BVD。
二 matlab中diag函数的用法
1 X = diag(v,k)
v为向量,X为矩阵
以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
例:
>> v=[1 2 3];
>> x=diag(v,-1)
x =
0 0 0 0
1 0 0 0
0 2 0 0
0 0 3 0
2 v=diag(X,k)
X为矩阵,v为向量
取矩阵X的第K条对角线元素为向量v
例:
>> aa=randn(3,3)
aa =
-1.3282 -1.7925 0.4092
-0.3803 0.5858 -0.4684
-0.9560 0.7356 0.8292
>> diag(aa)
ans =
-1.3282
0.5858
0.8292
>> diag(aa,1)
ans =
-1.7925
-0.4684
>> diag(aa,2)
ans =
0.4092
三
Matlab自带排序函数sort用法
[Y,I] = sort(X,DIM,MODE)
sort函数默认Mode为'ascend'为升序,sort(X,'descend')为降序排列。
sort(X)若X是矩阵,默认对X的各列进行升序排列
sort(X,dim)
dim=1时等效sort(X)
dim=2时表示对X中的各行元素升序排列
Matlab中给一维向量排序是使用sort函数:sort(X),其中x为待排序的向量。若欲保留排列前的索引,则可用[sX,index] = sort(X) ,排序后,sX是排序好的向量,index是 向量sX中对X 的索引。 索引使排列逆运算成为可能。事实上,这里X≡sX(index), [X恒等于sX(index)],这个结论确实很奇妙,而且很有用。
matlab按某一列数值,改变矩阵中整行的排列位置。
b=sortrows(a,2) %a 为要排序的矩阵。2表示按第几列进行排序,整数代表升序,负数代表降序。
%将矩阵a按照第2列的升序排列,其他列不会作升序排列,而是将跟随着第2列 的变化,保持一一对应。
b=sortrows(a,-1)
%将矩阵a按照第1列的降序排列,其他列将跟随着第1列 的变化,保持一一对应。
data=magic(3)
data =
8 1 6
3 5 7
4 9 2
data1=sortrows(data,1)
data1 =
3 5 7
4 9 2
8 1 6
data2=sortrows(data,-1)
data2 =
8 1 6
4 9 2
3 5 7