一.問題來源
返回檢索到的數據(按相關度排序)在原始數據中的索引。
二.問題解析
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 。