MatLab函数sort、issorted、sortrows、issortedrows

【注】详情请参阅 MatLab help 文档

1. sort 函数

1.1 作用

sort 函数对数组元素进行排序。

1.2 语法

1
2
3
4
5
B = sort(A)
B = sort(A,dim)
B = sort(___,direction)
B = sort(___,Name,Value)
[B,I] = sort(___)
  • B = sort(A)
    按升序对 A 的元素进行排序。
  1. 如果 A 是向量,则 sort(A) 对向量元素进行排序。
  2. 如果 A 是矩阵,则 sort(A) 会将 A 的列视为向量并对每列进行排序。
  3. 如果 A 是多维数组,则 sort(A) 会沿大小不等于 1 的第一个数组维度计算,并将这些元素视为向量。
  • B = sort(A,dim)
    返回 A 沿维度 dim(正整数标量)的排序结果到变量 B 中。

  • B = sort(___,direction)
    使用上述任何语法返回按 direction 指定的顺序排序结果到变量 B 中。direction 的可选值为 'ascend''descend',分别表示升序(默认)、降序。

  • B = sort(___,Name,Value)
    使用上述任何语法的基础上,指定用于排序的其他参数。

'MissingPlacement','auto'(默认)| 'first' | 'last' :指定排序缺失值(NaN、NaT、、missing)的位置。auto 指定缺失值放在最后(升序)或最前(降序),first 指定缺失值放在最前,last 指定缺失值放在最后。

'ComparisonMethod','auto'(默认)| 'real' | 'abs' :指定元素的比较方法。auto 指定当 A 为实数时,按 real(A) 对 A 进行排序;当 A 为复数时,按 abs(A) 进行排序。real 指定当 A 为实数或复数时,按 real(A) 对 A 进行排序;如果 A 包含具有相等实部的元素,则使用 imag(A) 进行排序。abs 指定当 A 为实数或复数时,按 abs(A) 对 A 进行排序;如果 A 包含具有相等模的元素,则使用区间 (-π\pi,π\pi] 中的 angle(A) 进行排序。

  • [B,I] = sort(___)
    使用上述任何语法的基础上,还返回一个索引向量的集合。I 的大小与 A 的大小相同,它描述了 A 的元素沿已排序的维度在 B 中的排序情况。比如,如果 A 是一个向量,则 B = A(I) 。

【注】当 A 是元胞数组时,不支持 dim 和 direction,即 sort 仅沿其大小不等于 1 的第一个维度进行升序排序。

2. issorted 函数

2.1 作用

issorted 函数用来判断数组是否已经有序。

2.2 语法

1
2
3
4
5
TF = issorted(A)
TF = issorted(A,dim)
TF = issorted(___,direction)
TF = issorted(___,Name,Value)
TF = issorted(A,'row')
  • TF = issorted(A)
    当 A 的元素按升序排列时,TF = issorted(A) 将返回逻辑标量值 1(true);否则,返回 0(false)。
  1. 若 A 是向量,当向量元素按照升序排列时,issorted 返回 1;否则,返回 0。
  2. 若 A 是矩阵,当 A 的每一列按升序排序时,issorted 返回 1;否则,返回 0。
  3. 若 A 是多维数组,当 A 沿其大小不等于 1 的第一个维度按升序排序时,issorted 返回 1;否则,返回 0。
  4. 若 A 是时间表(建议使用 issortedrows 函数,见下文),当其行时间向量按升序排序时,issorted 返回 1;否则,返回 0。
  • TF = issorted(A,dim)
    当 A 沿维度 dim 排序时,issorted 返回 1;否则,返回 0。

  • TF = issorted(___,direction)
    当 A 按 direction 指定的顺序排序时,issorted 返回 1;否则,返回 0。direction 可选值有:

'ascend' :检查数据是否按升序排列。
'decend' :检查数据是否按降序排列。
'monotonic' :检查数据是否按降序或升序排序。
'strictascend' :检查数据是否严格升序排列(即不能有重复元素或缺失元素)。
'strictdescend' :检查数据是否严格降序排列(即不能有重复元素或缺失元素)。
'strictmonotonic' :检查数据是否严格升序或降序排列(即不能有重复元素或缺失元素)。

  • TF = issorted(___,Name,Value)
    使用上述任何语法的基础上,指定用于检查排序顺序的其他参数。

'MissingPlacement','auto'(默认)| 'first' | 'last' :指定判断排序顺序时缺失值应该在的位置。auto 指定缺失值必须放在最后(升序)或最前(降序),才会返回 1。first 指定缺失值必须放在最前,才会返回 1。last 指定 缺失值必须放在最后,才会返回 1。
【注】时间表不支持该键值对属性(可改用 issortedrows 函数,见下文)

'ComparisonMethod','auto'(默认)| 'real' | 'abs' :指定元素的比较方法。auto 指定当 A 为实数时,A 是否按 real(A) 排序;当 A 为复数时,A 是否按照 abs(A) 排序。real 指定当 A 为实数或复数时,A 是否按 real(A) 排序;当 A 中元素具有连续相等的实部,则检查是否按照 imag(A) 排序。abs 指定当 A 为实数或复数时,A 是否按 abs(A) 排序;当 A 的元素具有连续相等的模,则检查是否按照区间 (-π\pi,π\pi] 中的 angle(A) 排序。

3. sortrows 函数

3.1 作用

sortarrows 函数用来对矩阵行或表行进行排序。

3.2 语法

1
2
3
4
5
6
7
8
9
10
11
12
B = sortrows(A)
B = sortrows(A,column)
B = sortrows(___,direction)
B = sortrows(___,Name,Value)
[B,index] = sortrows(___)
tblB = sortrows(tblA)
tblB = sortrows(tblA,'RowNames')
tblB = sortrows(tblA,rowDimName)
tblB = sortrows(tblA,vars)
tblB = sortrows(___,direction) % 作用于表或时间表
tblB = sortrows(___,Name,Value) % 作用于表或时间表
[tblB,index] = sortrows(___) % 作用于表或时间表
  • B = sortrows(A)
    基于 A 第一列中的元素按升序对矩阵 A 的行进行排序,将排序结果赋值给 B。当第一列包含重复元素时,sortrows 会进一步根据下一列进行排序,依次类推。

  • B = sortrows(A,column)
    基于向量 column 中指定的列对 A 的行进行排序,将排序结果赋值给 B。按照 column 中的指定的列依次对 A 的行进行排序(即当前列出现相同元素时,进一步依据下一个指定列进行排序)column 为非零整数标量或非零整数向量,每个指定的整数值指示一个按其排序的列,负整数表示排序顺序为降序。

  • B = sortrows(___,direction)
    在上述语法基础上,指定按 direction 指定的顺序对 A 的行进行排序。direction 的可以为 'ascend''descend',分别表示升序(默认)、降序;也可以是元素为 'ascend''descend' 的元胞数组,其中每个元素对应要排序的指定变量、行名称或行时间。

【注】如果同时指定 column 参数和 direction 参数,则 sortrows 根据 direction 进行排序,而忽略 column 中元素的符号。

  • B = sortrows(___,Name,Value)
    使用上述任何语法的基础上,指定用于排序的其他参数。

'MissingPlacement','auto'(默认)| 'first' | 'last' :指定排序缺失值(NaN、NaT、、missing)的位置。auto 指定缺失值放在最后(升序)或最前(降序),first 指定缺失值放在最前,last 指定缺失值放在最后。

'ComparisonMethod','auto'(默认)| 'real' | 'abs' :指定元素的比较方法。auto 指定当 A 为实数时,按 real(A) 对 A 进行排序;当 A 为复数时,按 abs(A) 进行排序。real 指定当 A 为实数或复数时,按 real(A) 对 A 进行排序;如果 A 包含具有相等实部的元素,则使用 imag(A) 进行排序。abs 指定当 A 为实数或复数时,按 abs(A) 对 A 进行排序;如果 A 包含具有相等模的元素,则使用区间 (-π\pi,π\pi] 中的 angle(A) 进行排序。

  • [B,index] = sortrows(___)
    在上述语法基础上,还返回描述行排列的索引向量,即 B = A(index,:)。

  • tblB = sortrows(tblA)

  1. 当 tblA 为表(table)时,基于 tblA 中的第一个变量中的值按升序对表进行排序;如果第一个变量中的元素重复,则 sortrows 按第二个变量中的元素排序,以此类推。
  2. 当 tblA 为时间表(timetable)时,则 sortrows 基于时间升序对 tblA 的行进行排序。时间表的行时间沿时间表的第一个维度标记行。
  • tblB = sortrows(tblA,'RowNames')
  1. 当 tblA 为表(table)时,基于 tblA 的行名称对表进行排序,表的行名称沿表的第一个维度标记行。如果 tblA 不包含行名称,即 tblA.Properties.RowNames 为空,则 sortrows 返回 tblA 。
  2. 当 tblA 是时间表时,不支持此语法。
  • tblB = sortrows(tblA,rowDimName)
    沿第一个维度按行标签 rowDimName 对 tblA 进行排序。
  1. 当 tblA 为表时,则行标签为行名称。
  2. 当 tblA 为时间表时,则行标签为行时间。
  • tblB = sortrows(tblA,vars)
    按 vars 指定的变量中的元素对表进行排序。
  1. 当 tblA 为包含行名称的表,则 vars 可以包含行名称。
  2. 当 tblA 为时间表时,则 vars 可以包含行时间。
  • tblB = sortrows(___,direction) % 作用于表或时间表
    对于上述任意语法,按照 direction 指定的顺序对 tblA 进行排序。direction 可以为 'ascend''descend',分别表示升序(默认)、降序;也可以是元素为 'ascend''descend' 的元胞数组,其中每个元素对应要排序的指定变量、行名称或行时间。

  • tblB = sortrows(___,Name,Value) % 作用于表或时间表
    对于上述任意语法,指定对表或时间表的行进行排序的其他参数。

'MissingPlacement','auto'(默认)| 'first' | 'last' :指定排序缺失值(NaN、NaT、、missing)的位置。auto 指定缺失值放在最后(升序)或最前(降序),first 指定缺失值放在最前,last 指定缺失值放在最后。

'ComparisonMethod','auto'(默认)| 'real' | 'abs' :指定元素的比较方法。auto 指定当 A 为实数时,按 real(A) 对 A 进行排序;当 A 为复数时,按 abs(A) 进行排序。real 指定当 A 为实数或复数时,按 real(A) 对 A 进行排序;如果 A 包含具有相等实部的元素,则使用 imag(A) 进行排序。abs 指定当 A 为实数或复数时,按 abs(A) 对 A 进行排序;如果 A 包含具有相等模的元素,则使用区间 (-π\pi,π\pi] 中的 angle(A) 进行排序。

  • [tblB,index] = sortrows(___) % 作用于表或时间表
    除了返回排序结果 tblB 外,还返回一个索引向量 index 使得 tblB = tblA(index,:) 。

4. issortedrows 函数

4.1 作用

issortedrows 函数用来确定矩阵或表的行是否已排序。

4.2 语法

1
2
3
4
5
6
7
8
9
10
TF = issortedrows(A)
TF = issortedrows(A,column)
TF = issortedrows(___,direction)
TF = issortedrows(___,Name,Value)
TF = issortedrows(tblA)
TF = issortedrows(tblA,'RowNames')
TF = issortedrows(tblA,rowDimName)
TF = issortedrows(tblA,vars)
TF = issortedrows(___,direction) % 作用于表或时间表
TF = issortedrows(___,Name,Value) % 作用于表或时间表
  • TF = issortedrows(A)
    当矩阵 A 的第一列元素按升序排序时,issortedrows 返回逻辑标量 1;否则,返回 0 。当第一列有连续重复元素时,issortedrows 进一步检查下一列是否按升序排序,以此类推。

  • TF = issortedrows(A,column)
    当 A 根据向量 column 中指定的列排序时,issortedrows 返回 1,否则返回 0 。
    column 为非零整数标量或非零整数向量,每个指定的整数值指示一个按其排序的列,负整数表示排序顺序为降序。

  • TF = issortedrows(___,direction)
    按照上述语法,检查是否按照 direction 指定的顺序进行排序,若是则返回 1,否则返回 0 。
    direction 可选值有:

'ascend' :检查数据是否按升序排列。
'decend' :检查数据是否按降序排列。
'monotonic' :检查数据是否按降序或升序排序。
'strictascend' :检查数据是否严格升序排列(即不能有重复元素或缺失元素)。
'strictdescend' :检查数据是否严格降序排列(即不能有重复元素或缺失元素)。
'strictmonotonic' :检查数据是否严格升序或降序排列(即不能有重复元素或缺失元素)
【注】direction 也可以是包含上述可选值的向量列表的元胞数组,其中列表中的每个元素对应于 A 排序列向量中的一列。

  • TF = issortedrows(___,Name,Value)
    在上述语法基础上,指定用于检查排序顺序的其他参数。

'MissingPlacement','auto'(默认)| 'first' | 'last' :指定判断排序顺序时缺失值应该在的位置。auto 指定缺失值必须放在最后(升序)或最前(降序),才会返回 1。first 指定缺失值必须放在最前,才会返回 1。last 指定 缺失值必须放在最后,才会返回 1。

'ComparisonMethod','auto'(默认)| 'real' | 'abs' :指定元素的比较方法。auto 指定当 A 为实数时,A 是否按 real(A) 排序;当 A 为复数时,A 是否按照 abs(A) 排序。real 指定当 A 为实数或复数时,A 是否按 real(A) 排序;当 A 中元素具有连续相等的实部,则检查是否按照 imag(A) 排序。abs 指定当 A 为实数或复数时,A 是否按 abs(A) 排序;当 A 的元素具有连续相等的模,则检查是否按照区间 (-π\pi,π\pi] 中的 angle(A) 排序。

  • TF = issortedrows(tblA)
  1. 若 tblA 为表,则检查表中的行是否基于第一个变量中的元素按升序排序;如果第一个变量中的元素重复,则 issortedrows 检查第二个变量中的元素,依次类推。
  2. 若 tblA 为时间表,则检查 tblA 中的行是否基于其行时间升序排序,时间表的行时间沿时间表的第一个维度标记行。
  • TF = issortedrows(tblA,'RowNames')
    检查表中的行是否基于行名称升序排序。表的行名称沿表的第一个维度标记(tblA 为时间表时不支持该语法)

  • TF = issortedrows(tblA,rowDimName)
    检查表中的行是否沿第一个维度按行标签 rowDimName 进行排序。

  1. 若 tblA 是表,则标签为行名称。
  2. 若 tblA 是时间表,则标签为行时间。
  • TF = issortedrows(tblA,vars)
    检查表中的行是否基于变量 vars 中的元素升序排序。
  1. 若 tblA 为包含行名称的表,则 vars 可以包含行名称。
  2. 若 tblA 为时间表,则 vars 可以包含行时间。
  • TF = issortedrows(___,direction) % 作用于表或时间表
    按照上述语法,检查是否按照 direction 指定的顺序进行排序,若是则返回 1,否则返回 0 。
    direction 可选值有:

'ascend' :检查数据是否按升序排列。
'decend' :检查数据是否按降序排列。
'monotonic' :检查数据是否按降序或升序排序。
'strictascend' :检查数据是否严格升序排列(即不能有重复元素或缺失元素)。
'strictdescend' :检查数据是否严格降序排列(即不能有重复元素或缺失元素)。
'strictmonotonic' :检查数据是否严格升序或降序排列(即不能有重复元素或缺失元素)
【注】direction 也可以是包含上述可选值的向量列表的元胞数组,其中列表中的每个元素对应于 A 排序列向量中的一列。

  • TF = issortedrows(___,Name,Value) % 作用于表或时间表
    在上述语法基础上,指定用于检查排序顺序的其他参数。

'MissingPlacement','auto'(默认)| 'first' | 'last' :指定判断排序顺序时缺失值应该在的位置。auto 指定缺失值必须放在最后(升序)或最前(降序),才会返回 1。first 指定缺失值必须放在最前,才会返回 1。last 指定 缺失值必须放在最后,才会返回 1。

'ComparisonMethod','auto'(默认)| 'real' | 'abs' :指定元素的比较方法。auto 指定当 A 为实数时,A 是否按 real(A) 排序;当 A 为复数时,A 是否按照 abs(A) 排序。real 指定当 A 为实数或复数时,A 是否按 real(A) 排序;当 A 中元素具有连续相等的实部,则检查是否按照 imag(A) 排序。abs 指定当 A 为实数或复数时,A 是否按 abs(A) 排序;当 A 的元素具有连续相等的模,则检查是否按照区间 (-π\pi,π\pi] 中的 angle(A) 排序。