[轉(zhuǎn)載]MATLAB排序函數(shù)

2017-06-27  by:CAE仿真在線  來(lái)源:互聯(lián)網(wǎng)

源自網(wǎng)絡(luò)

============================================================

sort(A)若A是向量不管是列還是行向量,默認(rèn)都是對(duì)A進(jìn)行升序排列。sort(A)是默認(rèn)的升序,而sort(A,'descend')是降序排序。
sort(A)若A是矩陣,默認(rèn)對(duì)A的各列進(jìn)行升序排列
sort(A,dim)
dim=1時(shí)等效sort(A)
dim=2時(shí)表示對(duì)A中的各行元素升序排列

看下面的例子

>> A=magic(3)
A =
8 1 6
3 5 7
4 9 2

>> sort(A)
ans =
3 1 2
4 5 6
8 9 7

>> sort(A,1)
ans =
3 1 2
4 5 6
8 9 7

>> sort(A,2)
ans =
1 6 8
3 5 7
2 4 9

===================

Matlab中給一維向量排序是使用sort函數(shù):sort(A),排序是按升序進(jìn)行的,其中A為待排序的向量;若欲保留排列前的索引,則可用[sA,index] = sort(A),排序后,sA是排序好的向量,index 是 向量sA 中對(duì) A 的索引。 索引使排列逆運(yùn)算成為可能。

事實(shí)上,這里A≡sA(index),[A恒等于sA(index)],這個(gè)結(jié)論確實(shí)很奇妙,而且很有用。不信你排序之后試下鍵入命令sA(index),看看得到的是不是就是排列前的A呢。

=====================

  在Matlab中排序某個(gè)向量(一維)時(shí),可以使用sort(A),其中A為待排序的向量,如果僅是用來(lái)排序A,那么直接使用sort(A)即可,如果排序后還需要保留原來(lái)的索引可以用返回值,即[B,ind]=sort(A),計(jì)算后,B是A排序后的向量,A保持不變,ind是B中每一項(xiàng)對(duì)應(yīng)于A中項(xiàng)的索引。排序是安升序進(jìn)行的。
  
  在Matlab中,訪問矩陣中的元素,一維用A(1)訪問向量A的第一個(gè)元素;(下標(biāo)從1開始);二維用A(1,2)訪問A中第一行,第二列的元素。
  
  由于在sort函數(shù)的結(jié)果中,是安升序排序的,要轉(zhuǎn)換成降序,先用X=eye(n)生成一個(gè)n維的單位陣,然后用X=rot90(X)將其旋轉(zhuǎn)為次對(duì)角線的單位陣,再用原來(lái)矩陣乘以X即可,如要講A逆序排列采用如下步驟:
  
  X=eye(size(A));
  X=rot90(X);
  A=A*X;
  
  假如a是一個(gè)2*n的矩陣,即兩行.
  b=a(1,:);
  [c,pos]=sort(b);%pos為排序后的下標(biāo),c為第一行的排序結(jié)果;
  a(2,:)=a(2,pos);%第二行按照第一行排序的下標(biāo)對(duì)應(yīng)
  a(1,:)=c;%第一行結(jié)果重新賦給a 的第一行
  
  以下適用于m*n的矩陣按第一行排序
  [ b, pos ] = sort( a( 1, : ) );
  a = a( :, pos );

=======================

matlab按某一列排序,其他列不變辦法

b=sortrows(a,2)%a 為要排序的矩陣。2表示按第幾列進(jìn)行排序,整數(shù)代表升序,負(fù)數(shù)代表降序。
%將矩陣a按照第2列的升序排列,其他列不會(huì)作升序排列,而是將跟隨著第2列 的變化,保持一一對(duì)應(yīng)。

b=sortrows(a,-3)
%將矩陣a按照第3列的降序排列,其他列將跟隨著第3列 的變化,保持一一對(duì)應(yīng)。

data =
132
765
498

sortrows(data,1)
ans =
132
498
765

sortrows(data,-1)
ans =
765
498
132


開放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:[轉(zhuǎn)載]MATLAB排序函數(shù) MatLab培訓(xùn) MatLab培訓(xùn)課程 MatLab在線視頻教程 MatLab技術(shù)學(xué)習(xí)教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎(chǔ)知識(shí) Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過(guò)下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com