MATLAB中issorted函数用法
目录
语法
说明
示例
已排序的向量
已排序的矩阵行
二维字符串数组
具有 NaN 值的复数向量
issorted函数的功能是确定数组是否已排序。
语法
TF = issorted(A)
TF = issorted(A,dim)
TF = issorted(___,direction)
TF = issorted(___,Name,Value)
TF = issorted(A,'rows')
说明
当 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。
当 A 按 direction 指定的顺序排序时,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 是时间表,则 issorted 检查行时间向量是否按升序排列。
对于字符向量矩阵,不支持此语法。
注意
不建议使用该语法。请改用 issortedrows。
示例
已排序的向量
创建一个向量,并检查它是否按升序排序。
A = [5 12 33 39 78 90 95 107];
issorted(A)
ans = logical1
已排序的矩阵行
创建一个 5×5 矩阵,并检查其中的每一行是否按降序排序。
A = magic(5)
A = 5×517 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9issorted(A,2,'descend')
ans = logical0
使用 sort 函数对 A 的每一行按降序排序,并检查结果是否具有降序排列的行。
B = sort(A,2,'descend')
B = 5×524 17 15 8 123 16 14 7 522 20 13 6 421 19 12 10 325 18 11 9 2issorted(B,2,'descend')
ans = logical1
二维字符串数组
创建一个二维字符串数组,并确定每一列是否已排序。
str = ["Horse","Chicken";"cow","Goat"]
str = 2x2 string"Horse" "Chicken""cow" "Goat" issorted(str)
ans = logical1
确定各行是否已从左到右进行排序。
issorted(str,2)
ans = logical0
确定每一行是否已按降序从左到右进行排序。
issorted(str,2,'descend')
ans = logical1
具有 NaN
值的复数向量
创建一个包含复数和 NaN
值的向量。
A = [NaN NaN 1+i 1+2i 2+2i 3+i];
检查 NaN 元素是否放置在向量的最前面,其余元素是否按实部进行排序。
issorted(A,'MissingPlacement','first','ComparisonMethod','real')
ans = logical1
由于 A 的第三个和第四个元素具有相等的实部,issorted 会检查这些元素的虚部是否也已排序。
imag(A(3))
ans = 1
imag(A(4))
ans = 2
字符和字符串数组的排序顺序
MATLAB® 使用 UTF-16 字符编码方案将字符存储为 Unicode®。字符和字符串数组按 UTF-16 代码点顺序进行排序。对于同时也是 ASCII 字符的字符,此顺序意味着大写字母在小写字母之前。数字和某些标点符号也在字母之前。