MatLab函数sort、issorted、sortrows、issortedrows
【注】详情请参阅 MatLab help 文档。
1. sort 函数
1.1 作用
sort 函数对数组元素进行排序。
1.2 语法
1 | B = sort(A) |
- B = sort(A)
按升序对 A 的元素进行排序。
- 如果 A 是向量,则 sort(A) 对向量元素进行排序。
- 如果 A 是矩阵,则 sort(A) 会将 A 的列视为向量并对每列进行排序。
- 如果 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 包含具有相等模的元素,则使用区间 (-,] 中的 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 | TF = issorted(A) |
- TF = issorted(A)
当 A 的元素按升序排列时,TF = issorted(A) 将返回逻辑标量值 1(true);否则,返回 0(false)。
- 若 A 是向量,当向量元素按照升序排列时,issorted 返回 1;否则,返回 0。
- 若 A 是矩阵,当 A 的每一列按升序排序时,issorted 返回 1;否则,返回 0。
- 若 A 是多维数组,当 A 沿其大小不等于 1 的第一个维度按升序排序时,issorted 返回 1;否则,返回 0。
- 若 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 的元素具有连续相等的模,则检查是否按照区间 (-,] 中的 angle(A) 排序。
3. sortrows 函数
3.1 作用
sortarrows 函数用来对矩阵行或表行进行排序。
3.2 语法
1 | B = sortrows(A) |
-
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 包含具有相等模的元素,则使用区间 (-,] 中的 angle(A) 进行排序。
-
[B,index] = sortrows(___)
在上述语法基础上,还返回描述行排列的索引向量,即 B = A(index,:)。 -
tblB = sortrows(tblA)
- 当 tblA 为表(table)时,基于 tblA 中的第一个变量中的值按升序对表进行排序;如果第一个变量中的元素重复,则 sortrows 按第二个变量中的元素排序,以此类推。
- 当 tblA 为时间表(timetable)时,则 sortrows 基于时间升序对 tblA 的行进行排序。时间表的行时间沿时间表的第一个维度标记行。
- tblB = sortrows(tblA,‘RowNames’)
- 当 tblA 为表(table)时,基于 tblA 的行名称对表进行排序,表的行名称沿表的第一个维度标记行。如果 tblA 不包含行名称,即 tblA.Properties.RowNames 为空,则 sortrows 返回 tblA 。
- 当 tblA 是时间表时,不支持此语法。
- tblB = sortrows(tblA,rowDimName)
沿第一个维度按行标签 rowDimName 对 tblA 进行排序。
- 当 tblA 为表时,则行标签为行名称。
- 当 tblA 为时间表时,则行标签为行时间。
- tblB = sortrows(tblA,vars)
按 vars 指定的变量中的元素对表进行排序。
- 当 tblA 为包含行名称的表,则 vars 可以包含行名称。
- 当 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 包含具有相等模的元素,则使用区间 (-,] 中的 angle(A) 进行排序。
- [tblB,index] = sortrows(___) % 作用于表或时间表
除了返回排序结果 tblB 外,还返回一个索引向量 index 使得 tblB = tblA(index,:) 。
4. issortedrows 函数
4.1 作用
issortedrows 函数用来确定矩阵或表的行是否已排序。
4.2 语法
1 | TF = issortedrows(A) |
-
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 的元素具有连续相等的模,则检查是否按照区间 (-,] 中的 angle(A) 排序。
- TF = issortedrows(tblA)
- 若 tblA 为表,则检查表中的行是否基于第一个变量中的元素按升序排序;如果第一个变量中的元素重复,则 issortedrows 检查第二个变量中的元素,依次类推。
- 若 tblA 为时间表,则检查 tblA 中的行是否基于其行时间升序排序,时间表的行时间沿时间表的第一个维度标记行。
-
TF = issortedrows(tblA,‘RowNames’)
检查表中的行是否基于行名称升序排序。表的行名称沿表的第一个维度标记(tblA 为时间表时不支持该语法) -
TF = issortedrows(tblA,rowDimName)
检查表中的行是否沿第一个维度按行标签 rowDimName 进行排序。
- 若 tblA 是表,则标签为行名称。
- 若 tblA 是时间表,则标签为行时间。
- TF = issortedrows(tblA,vars)
检查表中的行是否基于变量 vars 中的元素升序排序。
- 若 tblA 为包含行名称的表,则 vars 可以包含行名称。
- 若 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 的元素具有连续相等的模,则检查是否按照区间 (-,] 中的 angle(A) 排序。