Matlab 用sort函數排序 二維數組2008-09-14 22:51在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 );