matlab排序函数下标,MATLAB排序函数-⼩众知识
sort命令排序>> A=magic(3)
A =
8 1 6
3 5 7
4 9 2
>> sort(A)
ans =
3 1 2
4 5 6
8 9 7
>> sort(A,1)
ans =
3 1 2
4 5 6
8 9 7
>> sort(A,2)
ans =
1 6 8
3 5 7
2 4 9
===================
Matlab中给⼀维向量排序是使⽤sort函数:sort(A),排序是按升序进⾏的,其中A为待排序的向量;若欲保留排列前的索引,则可
⽤ [sA,index] = sort(A) ,排序后,sA是排序好的向量,index 是 向量sA 中对 A 的索引。 索引使排列逆运算成为可能。
事实上,这⾥A ≡sA(index) , [A恒等于sA(index)],这个结论确实很奇妙,⽽且很有⽤。不信你排序之后试下键⼊命令sA(index) ,看看得到的是不是就是排列前的A呢。
=====================
在Matlab中排序某个向量(⼀维)时,可以使⽤sort(A),其中A为待排序的向量,如果仅是⽤来排序A,那么直接使⽤sort(A)即可,如果排序后还需要保留原来的索引可以⽤返回值,即[B,ind]=sort(A),计算后,B是A排序后的向量,A保持不变,ind是B中每⼀项对应于A中项的索引。排序是安升序进⾏的。
在Matlab中,访问矩阵中的元素,⼀维⽤A(1)访问向量A的第⼀个元素;(下标从1开始);⼆维⽤A(1,2)访问A中第⼀⾏,第⼆列的元素。
由于在sort函数的结果中,是安升序排序的,要转换成降序,先⽤X=eye(n)⽣成⼀个n维的单位阵,然后⽤X=rot90(X)将其旋转为次对⾓线的单位阵,再⽤原来矩阵乘以X即可,如要讲A逆序排列采⽤如
下步骤:
X=eye(size(A));
X=rot90(X);
A=A*X;
假如a是⼀个2*n的矩阵,即两⾏.
b=a(1,:);
[c,pos]=sort(b);%pos为排序后的下标,c为第⼀⾏的排序结果;
a(2,:)=a(2,pos);%第⼆⾏按照第⼀⾏排序的下标对应
a(1,:)=c;%第⼀⾏结果重新赋给a 的第⼀⾏
以下适⽤于m*n的矩阵按第⼀⾏排序
[ b, pos ] = sort( a( 1, : ) );
a = a( :, pos );
=======================
matlab按某⼀列排序,其他列不变办法
b=sortrows(a,2) %a 为要排序的矩阵。2表⽰按第⼏列进⾏排序,整数代表升序,负数代表降序。
%将矩阵a按照第2列的升序排列,其他列不会作升序排列,⽽是将跟随着第2列 的变化,保持⼀⼀对应。b=sortrows(a,-3)
%将矩阵a按照第3列的降序排列,其他列将跟随着第3列 的变化,保持⼀⼀对应。
data =
1 3 2
7 6 5
4 9 8
sortrows(data,1)
ans =
1 3 2
4 9 8
7 6 5
sortrows(data,-1)
ans =
7 6 5
4 9 8
1 3 2
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论