sort和sortrows對矩陣排序

 

sort函數排序

在處理問題時,排序是一個非常常見的需求。sort函數是Matlab內置的排序函數,可以滿足常用的排序需求。sort函數的基本形式如下

[Y,I] = sort(X,DIM,MODE)
  • Y表示對X排序後的結果
  • I 表示Y中對應元素原來在X中的下標

  • mode的默認值是‘ascend’升序排列,‘descend’爲降序排列

  • DIM的默認值是1,如果X是矩陣,則默認對矩陣的各個列進行升序排列,即sort(X,1)與sort(X)等效(矩陣在matlab中是按列存儲的)
  • sort(X,2)表示對矩陣的各行中的元素按照升序排列
  • 如果X是行向量,則Y與I也是行向量;如果X是列向量,則Y與I也是列向量,如果X是矩陣,則Y與I是與X維數相同的矩陣
    -由於在排序的時候保留了數據在原數組的下標信息,所以排序是可逆的。如果[Y,I] = sort(X,DIM,MODE)X是排序前的向量,Y是排序後的向量,I是下標的索引,則X=Y(I),可以還原原來的向量。

DEMO1

>> X = fix(rand(1,5)*10)

X =

     7     1     4     6     4

>> [Y,I] = sort(X)

Y =

     1     4     4     6     7


I =

     2     3     5     4     1

>> X = fix(rand(5,1)*10)

X =

     4
     6
     0
     0
     0

>> [Y,I] = sort(X)

Y =

     0
     0
     0
     4
     6


I =

     3
     4
     5
     1
     2

>> X = fix(rand(3,5)*10)

X =

     8     9     4     3     8
     6     0     2     4     9
     4     1     6     1     0

>> [Y,I] = sort(X)

Y =

     4     0     2     1     0
     6     1     4     3     8
     8     9     6     4     9


I =

     3     2     2     3     3
     2     3     1     1     1
     1     1     3     2     2

>> [Y,I] = sort(X,2)

Y =

     3     4     8     8     9
     0     2     4     6     9
     0     1     1     4     6


I =

     4     3     1     5     2
     2     3     4     1     5
     5     2     4     1     3

sortrows函數

[Y,I]=sortrows(X,Colnum)
  • sortrows函數可以使用矩陣的某列值的大小對矩陣行進行排序,就像excel 中按照某列排序並擴展選定區域一樣。
  • X是待排序的矩陣
  • Colnum 是列的序號,指定按照第幾列進行排序,整數表示按照升序進行排序,負數表示按照降序進行排序
  • Y是排序後的矩陣
  • I 排序後的行在之前矩陣中的行標

Demo2

>> X = fix(rand(3,5)*10)

X =

     8     9     4     3     8
     6     0     2     4     9
     4     1     6     1     0

>> [Y,I]=sortrows(X,1)

Y =

     4     1     6     1     0
     6     0     2     4     9
     8     9     4     3     8


I =

     3
     2
     1

>> [Y,I]=sortrows(X,-2)

Y =

     8     9     4     3     8
     4     1     6     1     0
     6     0     2     4     9


I =

     1
     3
     2

注:對矩陣行的排序排序方法都可以用在矩陣列的排序中,因爲矩陣有個轉置運算,行列式可以互換的,可以將對列的運算轉化成對行的運算

轉載僅作爲筆記使用,如有侵權請聯繫。原文地址:https://blog.csdn.net/liuweiyuxiang/article/details/78036572

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章