本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

issorted

确定数组是否已排序

说明

示例

A 的元素按升序排列时,TF = issorted(A) 将返回逻辑标量值 1 (true);否则,将返回 0 (false)。

  • 如果 A 是向量,当向量元素按升序排序时,issorted 将返回 1。

  • 如果 A 是矩阵,当 A 的每一列按升序排序时,issorted 将返回 1。

  • 如果 A 是多维数组,当 A 沿其大小不等于 1 的第一个维度按升序排序时,issorted 将返回 1。

  • 如果 A 是时间表,当其行时间向量按升序排序时,issorted 将返回 1。要检查行时间或包含更多选项的时间表变量的排序顺序,请使用 issortedrows 函数。

示例

A 沿维度 dim 排序时,TF = issorted(A,dim) 将返回 1。例如,如果 A 是矩阵,当 A 的每一行按升序排序时,issorted(A,2) 将返回 1。

示例

Adirection 指定的顺序排序时,TF = issorted(___,direction) 将为上述任何语法返回 1。例如,如果 issorted(A,'monotonic') 的元素是升序或降序排序,则 A 返回 1。

示例

TF = issorted(___,Name,Value) 指定用于检查排序顺序的其他参数。例如,issorted(A,'ComparisonMethod','abs') 检查 A 是否按模排序。

当矩阵第一列的元素按顺序排列时,TF = issorted(A,'rows') 将返回 1。如果第一列包含重复元素,issorted 将根据第二列的排序方式来确定 TF。通常,如果当前列和前面的列都包含重复元素,issorted 将根据右侧紧邻的那一列来确定 TF

  • 如果 A 是时间表,则 issortedrows 检查行时间向量是否按升序排列。

  • 对于字符向量矩阵,不支持此语法。

注意

不建议使用该语法。请改用 issortedrows

示例

全部折叠

创建一个向量,并检查它是否按升序排序。

A = [5 12 33 39 78 90 95 107];
issorted(A)
ans = logical
   1

创建一个 5×5 矩阵,并检查其中的每一行是否按降序排序。

A = magic(5)
A = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

issorted(A,2,'descend')
ans = logical
   0

使用 sort 函数对 A 的每一行按降序排序,并检查结果是否具有降序排列的行。

B = sort(A,2,'descend')
B = 5×5

    24    17    15     8     1
    23    16    14     7     5
    22    20    13     6     4
    21    19    12    10     3
    25    18    11     9     2

issorted(B,2,'descend')
ans = logical
   1

创建一个二维字符串数组,并确定每一列是否已排序。

str = string({'Horse','Chicken';'cow','Goat'})
str = 2x2 string
    "Horse"    "Chicken"
    "cow"      "Goat"   

issorted(str)
ans = logical
   1

确定各行是否已从左到右进行排序。

issorted(str,2)
ans = logical
   0

确定每一行是否已按降序从左到右进行排序。

issorted(str,2,'descend')
ans = logical
   1

创建一个包含复数和 NaN 值的向量。

A = [NaN NaN 1+i 1+2i 2+2i 3+i];

检查 NaN 元素是否放置在向量的最前面,其余元素是否按实部进行排序。

issorted(A,'MissingPlacement','first','ComparisonMethod','real')
ans = logical
   1

由于 A 的第三个和第四个元素具有相等的实部,issorted 会检查这些元素的虚部是否也已排序。

imag(A(3))
ans = 1
imag(A(4))
ans = 2

输入参数

全部折叠

输入数组,指定为向量、矩阵、多维数组、字符向量元胞数组或时间表。

  • 如果 A 包含缺失值,例如 NaNNaT<undefined>missing,则默认情况下,issorted 只在这些值位于末尾位置时才会返回 1。

  • 如果 A 为复数,则默认情况下,issorted 基于元素的模确定排序顺序。如果存在具有相等模的连续元素,则 issorted 还检查区间 (-π, π] 中的相位角以进行排序。

  • 如果 A 为字符向量元胞数组或字符串数组,则 issorted 基于 UTF-16 字符编码方案的代码顺序确定排序顺序。排序区分大小写。有关已排序字符和字符串数组的详细信息,请参阅字符和字符串数组的排序顺序

数据类型:double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration | timetable

复数支持:

沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。

考虑矩阵 Aissorted(A,1) 会检查 A 的每列中的数据是否已排序。

issorted(A,2) 会检查 A 中每一行的数据是否已排序。

时间表输入不支持 dim

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

排序方向,指定为以下值之一:

  • 'ascend' - 检查数据是否按升序排列。数据可以包含连续的重复元素。

  • 'descend' - 检查数据是否按降序排列。数据可以包含连续的重复元素。

  • 'monotonic' - 检查数据是否按降序或升序排列。数据可以包含连续的重复元素。

  • 'strictascend' - 检查数据是否严格地按升序排列。数据不能包含重复元素或缺失元素。

  • 'strictdescend' - 检查数据是否严格地按降序排列。数据不能包含重复元素或缺失元素。

  • 'strictmonotonic' - 检查数据是否严格地按降序或升序排列。数据不能包含重复元素或缺失元素。

时间表输入不支持 direction。请改用 issortedrows

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: issorted(A,'MissingPlacement','last')

缺失值(NaNNaT<undefined>missing)的位置,指定为逗号分隔的对组,包含 'MissingPlacement' 和下列项之一:

  • 'auto' - 缺失的元素必须放在最后(对于升序排序)或放在最前面(对于降序排序),才会返回 1。

  • 'first' - 缺失的元素必须放在最前面,才会返回 1。

  • 'last' - 缺失的元素必须放在最后,才会返回 1。

时间表输入不支持这种名称-值对组。请改用 issortedrows

元素比较方法,指定为逗号分隔的对组,包含 'ComparisonMethod' 和下列项之一:

  • '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) 以进行排序。

详细信息

全部折叠

字符和字符串数组的排序顺序

MATLAB® 使用 UTF-16 字符编码方案将字符存储为 Unicode®。字符和字符串数组按 UTF-16 代码点顺序进行排序。对于同时也是 ASCII 字符的字符,此顺序意味着大写字母在小写字母之前。数字和某些标点符号也在字母之前。

扩展功能

另请参阅

| |

在 R2006a 之前推出