MATLAB排序函式

2021-07-11 23:45:40 字數 1905 閱讀 5238

matlab排序函式

卓子 源自網路

sort(a)若a是向量不管是列還是行向量,預設都是對a進行公升序排列。sort(a)是預設的公升序,而sort(a,'descend')是降序排序。

sort(a)若a是矩陣,預設對a的各列進行公升序排列

sort(a,dim)

dim=1時等效sort(a)

dim=2時表示對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函式:sort(a),排序是按公升序進行的,其中a為待排序的向量;若欲保留排列前的索引,則可用[sa,index] = sort(a),排序後,sa是排序好的向量,index 是 向量sa 中對 a 的索引。 索引使排列逆運算成為可能。

事實上,這裡a ≡sa(index) ,[a恆等於sa(index)],這個結論確實很奇妙,而且很有用。不信你排序之後試下鍵入命令sa(index),看看得到的是不是就是排列前的a呢。

********************=

在matlab中排序某個向量(一維)時,可以使用sort(a),其中a為待排序的向量,如果僅是用來排序a,那麼直接使用sort(a)即可,如果排序後還需要保留原來的索引可以用返回值,即[b,ind]=sort(a),計算後,b是a排序後的向量,a保持不變,ind是b中每一項對應於a中項的索引。排序是安公升序進行的。

在matlab中,訪問矩陣中的元素,一維用a(1)訪問向量a的第乙個元素;(下標從1開始);二維用a(1,2)訪問a中第一行,第二列的元素。

由於在sort函式的結果中,是安公升序排序的,要轉換成降序,先用x=eye(n)生成乙個n維的單位陣,然後用x=rot90(x)將其旋轉為次對角線的單位陣,再用原來矩陣乘以x即可,如要講a逆序排列採用如下步驟:

x=eye(size(a));

x=rot90(x);

a=a*x;

假如a是乙個2*n的矩陣,即兩行.

b=a(1,:);

[c,pos]=sort(b);%pos為排序後的下標,c為第一行的排序結果;

a(2,:)=a(2,pos);%第二行按照第一行排序的下標對應

a(1,:)=c;%第一行結果重新賦給a 的第一行

以下適用於m*n的矩陣按第一行排序

[ b, pos ] = sort( a( 1, : ) );

a = a( :, pos );

b=sortrows(a,2) 

%a 為要排序的矩陣。2表示按第幾列進行排序,整數代表公升序,負數代表降序。

%將矩陣a按照第2列的公升序排列,其他列不會作公升序排列,而是將跟隨著第2列 的變化,保持一一對應。

b=sortrows(a,-3)

%將矩陣a按照第3列的降序排列,其他列將跟隨著第3列 的變化,保持一一對應。

data =

1 3 27 

6 5

4 9 

8sortrows(data,1)

ans =

1 3 24 

9 8

7 6 

5sortrows(data,-1)

ans =

7 6 54 

9 8

1 3 

2

Matlab排序函式

matlab自帶排序函式sort用法 y,i sort x,dim,mode sort函式預設mode為 ascend 為公升序,sort x,descend 為降序排列。sort x 若x是矩陣,預設對x的各列進行公升序排列 sort x,dim dim 1時等效sort x dim 2時表示對x...

Matlab函式 strel函式

strel structuring element 運用各種形狀和大小構造元素,基本語法為 se strel shape,parameters shape 是指定希望形狀的字串,parameters 是指定形狀資訊的一系列引數 se strel arbitrary nhood 建立乙個任意形狀的結構...

matlab 邏輯函式

all 向量中是否所有分量均非零 any 是否有元素非零 exist 指定變數或檔案是否存在 find 返回矩陣中非零元素的索引和置 is is系列,大部分根據名稱可以知道功能 iscell iscellstr isempty 是否空陣列 isequal 陣列是否相等 isfield 是否結構陣列中...