find(NeighborEvent==max(NeighborEvent)),寻找最大值以及相应的位置索引;
isempty(a) a若为空返回1,不为空返回0
一、集合运算的函数如下:
- intersect(A, B):集合交集,A和B均为向量
- 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]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
参考资料:
1.Matlab的集合运算
2.Matlab集合运算符示例-易百教程
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 );
=======================
matlab按某一列排序,其他列不变办法
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
Example 1
Sort horizontal vector A:
A = [78 23 10 100 45 5 6];
sort(A)
ans =
5 6 10 23 45 78 100
Example 2
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
Example 3
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