Matlab中sortrows函數解析


一.問題來源

  返回檢索到的數據(按相關度排序)在原始數據中的索引。

二.問題解析

  x = [1 4 3 5; 1 3 2 6];sortrows(x)其結果是按照row來排列,默認首先排第一列,1和1一樣大,那么排第二列,3比4小,所以1 3 2 6應該在第一行。假如使用sortrows(x, 4)那么結果中首先看第4列的大小,5比6小,那么原來的順序就對了,如果是x = 1 2 3 61 2 3 5那么,sortrows(x, 4)之后,由於第4列的5比6小,那么,1 2 3 5應該排到前面。類似於姓名的排列,如果第一個字母一樣,那么按照第二個字母排,第二個一樣,就按第三個排,只不過這里可以規定順序,就是首先按哪個排,然后在按哪個排。
  或是從某一列開始比較數值並按升序排序,例:C = sortrows(A,2)。
  亦可以從某一列開始以降序排列,例:D = sortrows(A, -4)。
  如果要求每一列都按照升序排列E=sort(A)如果要求每一列都按照降序排列F=-sort(-A)。

A =
     1     5     9
     2     1     6
     3     5     8
>> sortrows(A,[2 3])
ans =
     2     1     6
     3     5     8
     1     5     9

   先按第二列排,如果第二列中有相等的行(例子中的第二行,第三行),再按第三列排(第二列固定不動,按第三列的升序排列,第一行的值跟隨第三行變化),這里的【2 3】並不是一個矩陣值的位置,而是第二行與第三行的意思,同理,

A =
     1     5     9
     2     1     8
     3     5     8

sortrows(A,[2 3 1])
ans =
     2     1     8
     3     5     8
     1     5     9

  先按2排,再按3按(兩個5),最后按1排(兩個8)。如果沒有相同的值,無論sortrows(A,[x y])中的y真如何變化,結果都是一樣的,等同於sortrows(A,x)。

  參考:百度知道,ILOVEMatlab 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM