sort
函数功能
把数组元素按升序或降序排列
使用方法
B = sort(A)
把数组A沿不同维度上的元素按照升序排列。
如果A是向量,sort(A) 对A中元素按照升序排列。
如果A是矩阵,sort(A) 对A按每一列元素按照升序排列。
如果A是多维数组,sort(A) 对沿着第一非单元集的元素像向量一样处理并返回一个升序排列的向量数组。
如果A是字符串元胞数组,sort(A) 按照ASCII字典对字符串进行升序排列,对元胞数组不能使用dim或mode参数。
整型,浮点型,逻辑型和字符型数组是允许的,浮点型数组可以是复数数组。
对于A中相同的元素,则按照其在A中的先后位置排列在一起;
若A为复数,则按元素幅值按升序排列,若幅值相同的复数,则按照在区间[-pi,pi]的幅角升序排列。
如A中有非数NAN元素,则将他们排列到最后。
B = sort(A,dim)
按数组A中指定维度dim上的元素按照升序排列。
B = sort(...,mode)
按照mode的值为指定的方向进行排列,mode可取:
'ascend' 升序排列(默认)。
'descend' 降序排列。
[B,IX] = sort(A,...)
返回索引数组IX,其大小为size(IX) == size(A)。
若A是一个向量,B = A(IX)。
若A是一个m*n的矩阵,则IX的每一列是与A中列向量的元素相对应的置换向量。
for j = 1:n
B(:,j) = A(IX(:,j),j);
end
若A中有重复出现的相等的值,则返回原来相对位置的索引。
排列复数项
如果数组A有复数项r和s,sort排列他们按照以下规则:若满足以下任何一个条件,r将sort(A)中排在s前面:
abs(r) < abs(s)
abs(r) = abs(s) 并angle(r)<angle(s)
其中-pi<angle(r)<=pi
例子:
v = [1 -1 i -i];
angle(v)
ans =
0 3.1416 1.5708 -1.5708
sort(v)
ans =
0 - 1.0000i 1.0000
0 + 1.0000i -1.0000
应用举例
例1:
在每一维排列矩阵A,然后第三次排列它,返回排列结果的索引矩阵:
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
[B,IX] = sort(A,2)
B =
3 5 7
0 2 4
IX =
1 3 2
1 3 2
例2:
按照降序排列每一列.
A = [ 3 7 5
6 8 3
0 4 2 ];
sort(A,1,'descend')
ans =
6 8 5
3 7 3
0 4 2
等价于
sort(A,'descend')
ans =
6 8 5
3 7 3
0 4 2
函数功能
把数组元素按升序或降序排列
使用方法
B = sort(A)
把数组A沿不同维度上的元素按照升序排列。
如果A是向量,sort(A) 对A中元素按照升序排列。
如果A是矩阵,sort(A) 对A按每一列元素按照升序排列。
如果A是多维数组,sort(A) 对沿着第一非单元集的元素像向量一样处理并返回一个升序排列的向量数组。
如果A是字符串元胞数组,sort(A) 按照ASCII字典对字符串进行升序排列,对元胞数组不能使用dim或mode参数。
整型,浮点型,逻辑型和字符型数组是允许的,浮点型数组可以是复数数组。
对于A中相同的元素,则按照其在A中的先后位置排列在一起;
若A为复数,则按元素幅值按升序排列,若幅值相同的复数,则按照在区间[-pi,pi]的幅角升序排列。
如A中有非数NAN元素,则将他们排列到最后。
B = sort(A,dim)
按数组A中指定维度dim上的元素按照升序排列。
B = sort(...,mode)
按照mode的值为指定的方向进行排列,mode可取:
'ascend' 升序排列(默认)。
'descend' 降序排列。
[B,IX] = sort(A,...)
返回索引数组IX,其大小为size(IX) == size(A)。
若A是一个向量,B = A(IX)。
若A是一个m*n的矩阵,则IX的每一列是与A中列向量的元素相对应的置换向量。
for j = 1:n
B(:,j) = A(IX(:,j),j);
end
若A中有重复出现的相等的值,则返回原来相对位置的索引。
排列复数项
如果数组A有复数项r和s,sort排列他们按照以下规则:若满足以下任何一个条件,r将sort(A)中排在s前面:
abs(r) < abs(s)
abs(r) = abs(s) 并angle(r)<angle(s)
其中-pi<angle(r)<=pi
例子:
v = [1 -1 i -i];
angle(v)
ans =
0 3.1416 1.5708 -1.5708
sort(v)
ans =
0 - 1.0000i 1.0000
0 + 1.0000i -1.0000
应用举例
例1:
在每一维排列矩阵A,然后第三次排列它,返回排列结果的索引矩阵:
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
[B,IX] = sort(A,2)
B =
3 5 7
0 2 4
IX =
1 3 2
1 3 2
例2:
按照降序排列每一列.
A = [ 3 7 5
6 8 3
0 4 2 ];
sort(A,1,'descend')
ans =
6 8 5
3 7 3
0 4 2
等价于
sort(A,'descend')
ans =
6 8 5
3 7 3
0 4 2