MatLab函数sort、issorted、sortrows、issortedrows

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

1. sort 函数

1.1 作用

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

1.2 语法

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、<undefined>、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 语法

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 语法

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、<undefined>、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、<undefined>、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 语法

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) 排序。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容