matlab中sort函式的用法

鴨脖發表於2013-01-31

help文件中第一句就說明,可以用sort將參量中的元素按升序或降序排列~

格式:

B = sort(A)   %沿著輸入參量 A的不同維的方向、從小到大重新排列 A中的元素。A 可以是字串的、實數的、複數的單元陣列。對於 A 中完全相同的元素,則按它們在 A 中的先後位置排列在一塊;若 A 為複數的,則按元素幅值的從小到大排列,若有幅值相同的複數元素,則再按它們在區間[-π ,π ]的幅角從小到大排列;若 A 中有元素為NaN,則將它們排到最後。若 A為向量,則返回從小到大的向量,若A為二維矩陣,則按列的方向進行排列;若A為多維陣列,sort(A)把沿著第一非單元集的元素像向量一樣進行處理。

B=sort(A,dim) %沿著矩陣A中指定維數dim方向重新排列A中的元素。

[B,IX]=sort(A); %其中IX是一個大小等於size(A)的陣列,其每一列是A中列向量的元素相對應的置換位置記號。

舉例:A = [ 3 3 5
      0 4 2 ];

sort(A,1) %縱向排列

ans =

     0     3     2
     3     4     5

sort(A,2) %橫向排列

ans =

     3     3     5
     0     2     4

>>A = [-1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i]; 
>>[B1,INDEX] = sort(A)

計算結果為: 
    B1 = 
        Columns 1 through 4 
          -0.2000      -1.9000       3.1416         2.4000 + 3.6000i 
        Columns 5 through 6 
           5.6000      7.0000 
    INDEX = 
          2     1     3     6     4     5

由此可知,如果A與另一個矩陣C(char或cell)一一對應,如果用[B1,INDEX] = sort(A)對A進行排序,則可以取得索引INDEX,進而可以查詢B1中每個元素與C中哪一個對應。

相關文章