matlab集合運算和sort演算法

2021-08-20 19:45:25 字數 3781 閱讀 5712

find(neighborevent==max(neighborevent)),尋找最大值以及相應的位置索引;

isempty(a) a若為空返回1,不為空返回0 

union(a, b) :集合並集

setdiff(a, b) :集合a減集合b的差集(如果集合a中的元素都在b中存在,則結果為空)

ismember(a, a) :判斷是否是集合中的元素

sort(a):對向量進行排序

issorted(a):判斷集合是否有序

setxor :集合異或(在並集但不在交集中的元素)

unique :返回集合的不重複元素(去掉相同元素)

a = [1,2,3,4,5,6];

b = [1,2,3,7,8,9];

c = [1,2,3,6,5,4,7,8,9];

d = [1,1,2,2,3,3]

intersect(a,b); % ans = [1,2,3]

union(a,b); % ans = [1,2,3,4,5,6,7,8,9]

setdiff(a,b) % ans = [4,5,6]

setdiff(a,c) % ans = empty matrix: 1-by-0

ismember(1,a); % ans = 1

sort(c); % ans = [1,2,3,4,5,6,7,8,9]

issorted(a); % ans = 1

setxor(a,b); % ans = [4,5,6,7,8,9]

unique(d); % ans = [1,2,3]

2.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     2

7     6     5

4     9     8

sortrows(data,1)

ans =

1     3     2

4     9     8

7     6     5

sortrows(data,-1)

ans =

7     6     5

4     9     8

1     3     2

sort horizontal vector a:

a = [78 23 10 100 45 5 6];

sort(a)

ans =

5 6 10 23 45 78 100

sort matrix a in each dimension:

a = [ 3 7 5

0 4 2 ];

sort(a,1)

ans =

0 4 2

3 7 5

sort(a,2)

ans =

3 5 7

0 2 4

sort it again, this time returning an array of indices for theresult:

[b, ix] = sort(a, 2)

b = 3 5 7

0 2 4

ix =

1 3 2

1 3 2

sort each column of matrix a in descendingorder:

a = [ 3  7  5

6 8 3

0 4 2 ];

sort(a,1,'descend')

ans =

6 8 5

3 7 3

0 4 2

this is equivalent to

sort(a,'descend')

ans =

6 8 5

3 7 3

0 4 2

Matlab的集合運算

matlab裡有關於集合運算的函式有如下的一些 intersect 集合交集 ismember 是否集合中元素 issorted 判斷集合是否排序 相關函式,sort 排序 setdiff 集合差集 setxor 集合異或 不在交集中的元素 union 兩個集合的並 unique 返回向量作為乙個集...

sort排序演算法集合

public class sort quicksortarray array 氣泡排序 效率 o n 適用於排序小列表 private static void bubblesortarray int array println array 選擇排序 效率 o n 適用於排序小列表 private s...

matlab的sort函式用法

1.sort a 對一維或二維矩陣進行公升序排序,並返回排序後的矩陣 當a為二維矩陣時,對矩陣的每一列分別進行排序。2.sort a,dim 對矩陣按指定的方向進行公升序排序,並返回排序後的矩陣。當dim 1時,對矩陣的每一列排序 即將第一維行數打亂重排 當dim 2時,對矩陣的每一行排序 即將第二...