sortrows

Сортировка строк массива или таблицы

Синтаксис

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) сортирует строки матрицы в порядке возрастания на основе элементов в первом столбце. Когда первый столбец содержит повторенные элементы, виды sortrows согласно следующему столбцу и повторяет это поведение для следования за равными значениями.

пример

B = sortrows(A,column) виды A на основе столбцов заданы в векторном column. Например, sortrows(A,4) сортирует строки A в порядке возрастания на основе элементов в четвертом столбце. sortrows(A,[4 6]) первые виды строки A на основе элементов в четвертом столбце, затем на основе элементов в шестом столбце, чтобы повредить связи.

пример

B = sortrows(___,direction) сортирует строки A в порядке, заданном direction для любого из предыдущих синтаксисов. direction может быть 'ascend' (значение по умолчанию) для порядка по возрастанию или 'descend' для порядка убывания. direction может также быть массивом ячеек, элементами которого является 'ascend' и 'descend', где каждый элемент соответствует столбцу, с которым работает sortrows. Например, sortrows(A,[4 6],{'ascend' 'descend'}) сортирует строки A в порядке возрастания на основе четвертого столбца, затем в порядке убывания на основе шестого столбца, чтобы повредить связи.

пример

B = sortrows(___,Name,Value) задает дополнительные параметры для сортировки строк. Например, sortrows(A,'ComparisonMethod','abs') сортирует элементы A значением.

пример

[B,index] = sortrows(___) также возвращает индексный вектор, который описывает перестановку строк, таким образом что B = A(index,:).

пример

tblB = sortrows(tblA) сортирует строки таблицы в порядке возрастания на основе значений в первой переменной. Если элементы в первой переменной повторяются, то виды sortrows элементами во второй переменной, и так далее.

Если tblA является расписанием, то sortrows сортирует строки tblA в порядке возрастания на основе его времен строки. Времена строки расписания маркируют строки по первому измерению расписания.

пример

tblB = sortrows(tblA,'RowNames') сортирует таблицу на основе ее имен строки. Имена строки таблицы маркируют строки по первому измерению таблицы. Если tblA не имеет имен строки, то есть, если tblA.Properties.RowNames пуст, то sortrows возвращает tblA.

Этот синтаксис не поддержан, когда tblA является расписанием.

пример

tblB = sortrows(tblA,rowDimName) виды tblA строкой маркируют rowDimName по первому измерению.

  • Если tblA является таблицей, то метки строки являются именами строки.

  • Если tblA является расписанием, то метки строки являются временами строки.

пример

tblB = sortrows(tblA,vars) сортирует таблицу по элементам в переменных, заданных vars. Например, sortrows(tblA,{'Var1','Var2'}) первые виды строки tblA на основе элементов в Var1, затем элементами в Var2.

  • Если tblA является таблицей, и он имеет имена строки, то vars может включить имена строк.

  • Если tblA является расписанием, то vars может включать времена строки.

пример

tblB = sortrows(___,direction) виды tblA в порядке заданы direction для любого из предыдущих табличных синтаксисов. direction может быть 'ascend' или 'descend', который применяется ко всем заданным переменным, именам строки, или времена строки, с которыми работает sortrows. direction может также быть массивом ячеек, элементами которого является 'ascend' и 'descend', где каждый элемент соответствует заданным переменным, именам строки, или времена строки, отсортированные на.

пример

tblB = sortrows(___,Name,Value) задает дополнительные параметры для сортировки строк таблицы или расписания. Например, виды sortrows(tblA,'Var1','MissingPlacement','first') на основе элементов в Var1, заказывая недостающие элементы, такие как NaN в начале таблицы.

пример

[tblB,index] = sortrows(___) также возвращается, индекс векторизовали таким образом что tblB = tblA(index,:).

Примеры

свернуть все

Создайте матрицу и отсортируйте ее строки в порядке возрастания на основе элементов в первом столбце. Когда первый столбец содержит повторенные элементы, sortrows смотрит на элементы во втором столбце, чтобы повредить связь. Для повторных элементов во втором столбце sortrows смотрит на третий столбец и так далее.

A = floor(gallery('uniformdata',[6 7],0)*100);
A(1:4,1) = 95;  A(5:6,1) = 76;  A(2:4,2) = 7;  A(3,3) = 73
A = 6×7

    95    45    92    41    13     1    84
    95     7    73    89    20    74    52
    95     7    73     5    19    44    20
    95     7    40    35    60    93    67
    76    61    93    81    27    46    83
    76    79    91     0    19    41     1

B = sortrows(A) 
B = 6×7

    76    61    93    81    27    46    83
    76    79    91     0    19    41     1
    95     7    40    35    60    93    67
    95     7    73     5    19    44    20
    95     7    73    89    20    74    52
    95    45    92    41    13     1    84

Сортировка строк A на основе значений во втором столбце. Когда заданный столбец повторил элементы, соответствующие строки поддерживают свой первоначальный порядок.

C = sortrows(A,2)
C = 6×7

    95     7    73    89    20    74    52
    95     7    73     5    19    44    20
    95     7    40    35    60    93    67
    95    45    92    41    13     1    84
    76    61    93    81    27    46    83
    76    79    91     0    19    41     1

Сортировка строк A на основе элементов в первом столбце, и смотрит на седьмой столбец, чтобы повредить любые связи.

D = sortrows(A,[1 7])
D = 6×7

    76    79    91     0    19    41     1
    76    61    93    81    27    46    83
    95     7    73     5    19    44    20
    95     7    73    89    20    74    52
    95     7    40    35    60    93    67
    95    45    92    41    13     1    84

Сортировка строк A в порядке убывания на основе элементов в четвертом столбце и отображения выходной вектор index, чтобы видеть, как строки были перестроены.

[E,index] = sortrows(A,4,'descend')
E = 6×7

    95     7    73    89    20    74    52
    76    61    93    81    27    46    83
    95    45    92    41    13     1    84
    95     7    40    35    60    93    67
    95     7    73     5    19    44    20
    76    79    91     0    19    41     1

index = 6×1

     2
     5
     1
     4
     3
     6

Создайте матрицу, содержащую комплексные числа, и отсортируйте строки матрицы в порядке возрастания на основе элементов в первом столбце. Поскольку значения A(1,1) и A(3,1) равны, sortrows вычисляет их углы, чтобы повредить связь.

A = [1+2i 3+i i; 2+10i 6i 2+5i; 2+i 4 3+3i]
A = 3×3 complex

   1.0000 + 2.0000i   3.0000 + 1.0000i   0.0000 + 1.0000i
   2.0000 +10.0000i   0.0000 + 6.0000i   2.0000 + 5.0000i
   2.0000 + 1.0000i   4.0000 + 0.0000i   3.0000 + 3.0000i

B = sortrows(A)
B = 3×3 complex

   2.0000 + 1.0000i   4.0000 + 0.0000i   3.0000 + 3.0000i
   1.0000 + 2.0000i   3.0000 + 1.0000i   0.0000 + 1.0000i
   2.0000 +10.0000i   0.0000 + 6.0000i   2.0000 + 5.0000i

angle(A(1,1))
ans = 1.1071
angle(A(3,1))
ans = 0.4636

Используйте опцию 'real', чтобы отсортировать строки A их действительной частью. Поскольку A(2,1) и A(3,1) имеют равные действительные части, sortrows использует мнимую часть, чтобы повредить связь.

C = sortrows(A,'ComparisonMethod','real')
C = 3×3 complex

   1.0000 + 2.0000i   3.0000 + 1.0000i   0.0000 + 1.0000i
   2.0000 + 1.0000i   4.0000 + 0.0000i   3.0000 + 3.0000i
   2.0000 +10.0000i   0.0000 + 6.0000i   2.0000 + 5.0000i

imag(A(2,1))
ans = 10
imag(A(3,1))
ans = 1

Создайте 6 2 массив ячеек из символьных векторов и отсортируйте его строки. Результатом является расположенный в алфавитном порядке список, отсортированный и по стране и по имени.

A = {'Germany' 'Lukas'; 'USA' 'William'; 'USA' 'Andrew'; ...
'Germany' 'Andreas'; 'USA' 'Olivia'; 'Germany' 'Julia'} 
A = 6x2 cell array
    {'Germany'}    {'Lukas'  }
    {'USA'    }    {'William'}
    {'USA'    }    {'Andrew' }
    {'Germany'}    {'Andreas'}
    {'USA'    }    {'Olivia' }
    {'Germany'}    {'Julia'  }

B = sortrows(A)
B = 6x2 cell array
    {'Germany'}    {'Andreas'}
    {'Germany'}    {'Julia'  }
    {'Germany'}    {'Lukas'  }
    {'USA'    }    {'Andrew' }
    {'USA'    }    {'Olivia' }
    {'USA'    }    {'William'}

Сортировка стран сначала, затем отсортируйте имена в порядке убывания.

C = sortrows(A,[1 2],{'ascend' 'descend'})
C = 6x2 cell array
    {'Germany'}    {'Lukas'  }
    {'Germany'}    {'Julia'  }
    {'Germany'}    {'Andreas'}
    {'USA'    }    {'William'}
    {'USA'    }    {'Olivia' }
    {'USA'    }    {'Andrew' }

Сортировка строк таблицы значениями переменных.

Составьте таблицу с четырьмя переменными, перечисляющими терпеливую информацию для пяти человек.

LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

tblA = table(Age,Height,Weight,BloodPressure,'RowNames',LastName)
tblA=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Smith       38       71       176       124     93  
    Johnson     43       69       163       109     77  
    Williams    38       64       131       125     83  
    Jones       40       67       133       117     75  
    Brown       49       64       119       122     80  

Сортировка строк таблицы. Функция sortrows сортирует строки в порядке возрастания сначала по переменной Age, и затем по переменной Height, чтобы повредить связь между этими двумя строками с равными возрастами.

tblB = sortrows(tblA)
tblB=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Williams    38       64       131       125     83  
    Smith       38       71       176       124     93  
    Jones       40       67       133       117     75  
    Johnson     43       69       163       109     77  
    Brown       49       64       119       122     80  

Составьте таблицу с четырьмя переменными, перечисляющими терпеливую информацию для пяти человек.

LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

tblA = table(Age,Height,Weight,BloodPressure,'RowNames',LastName)
tblA=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Smith       38       71       176       124     93  
    Johnson     43       69       163       109     77  
    Williams    38       64       131       125     83  
    Jones       40       67       133       117     75  
    Brown       49       64       119       122     80  

Сортировка строк таблицы в порядке возрастания на основе имен строки, и возвращает индексный вектор, который описывает, как строки были перестроены.

[tblB,index] = sortrows(tblA,'RowNames')
tblB=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Brown       49       64       119       122     80  
    Johnson     43       69       163       109     77  
    Jones       40       67       133       117     75  
    Smith       38       71       176       124     93  
    Williams    38       64       131       125     83  

index = 5×1

     5
     2
     4
     1
     3

Составьте таблицу с четырьмя переменными, перечисляющими терпеливую информацию для пяти человек.

LastName = {'Sweet';'Jacobson';'Wang';'Joiner';'Berger'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

tblA = table(Age,Height,Weight,BloodPressure,'RowNames',LastName)
tblA=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Sweet       38       71       176       124     93  
    Jacobson    43       69       163       109     77  
    Wang        38       64       131       125     83  
    Joiner      40       67       133       117     75  
    Berger      49       64       119       122     80  

Сортировка строк таблицы в порядке возрастания Height, и затем в порядке убывания Weight.

tblB = sortrows(tblA,{'Height','Weight'},{'ascend','descend'})
tblB=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Wang        38       64       131       125     83  
    Berger      49       64       119       122     80  
    Joiner      40       67       133       117     75  
    Jacobson    43       69       163       109     77  
    Sweet       38       71       176       124     93  

Составьте таблицу с четырьмя переменными, перечисляющими терпеливую информацию для пяти человек. Переменная Weight содержит отсутствующие значения.

LastName = {'Sweet';'Jacobson';'Wang';'Joiner';'Berger'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;NaN;131;133;NaN];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
tblA = table(Age,Height,Weight,BloodPressure,'RowNames',LastName)
tblA=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Sweet       38       71       176       124     93  
    Jacobson    43       69       NaN       109     77  
    Wang        38       64       131       125     83  
    Joiner      40       67       133       117     75  
    Berger      49       64       NaN       122     80  

Сортировка строк таблицы в порядке возрастания Weight, помещая строки, содержащие NaN сначала.

tblB = sortrows(tblA,'Weight','MissingPlacement','first')
tblB=5×4 table
                Age    Height    Weight    BloodPressure
                ___    ______    ______    _____________

    Jacobson    43       69       NaN       109     77  
    Berger      49       64       NaN       122     80  
    Wang        38       64       131       125     83  
    Joiner      40       67       133       117     75  
    Sweet       38       71       176       124     93  

Создайте расписание и отсортируйте строки ко временам строки.

TimeDuration = [hours(3) hours(2) hours(1) hours(5) hours(6)]';
TT = timetable(TimeDuration,[98;97.5;97.9;98.1;101],[120;111;119;117;118]);
           
B = sortrows(TT,'TimeDuration')
B=5×3 timetable
    TimeDuration    Var1    Var2
    ____________    ____    ____

    1 hr            97.9    119 
    2 hr            97.5    111 
    3 hr              98    120 
    5 hr            98.1    117 
    6 hr             101    118 

Входные параметры

свернуть все

Входной массив, заданный как вектор-столбец или матрица.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration
Поддержка комплексного числа: Да

Столбец, сортирующий вектор, заданный как ненулевой целочисленный скаляр или вектор ненулевых целых чисел. Каждое заданное целочисленное значение указывает на столбец к виду. Отрицательные целые числа указывают, что порядок сортировки убывает.

Сортировка направления, заданного как вектор символов или массив ячеек из символьных векторов, содержащий 'ascend' (значение по умолчанию) или 'descend'. Если direction является массивом ячеек из символьных векторов, то количество записей должно совпадать с количеством столбцов или переменных, отсортированных на.

Если аргумент column и аргумент direction заданы вместе, то виды sortrows согласно direction, игнорируя знаки элементов в column.

Типы данных: char | cell

Входная таблица, заданная как таблица или расписание. Каждая переменная в tblA должна быть допустимым входом к sort или sortrows.

Типы данных: table | timetable

Имя первой размерности входной таблицы или расписания, заданного как вектор символов.

  • Если tblA является таблицей с именами строки, то rowDimName является именем первой размерности таблицы. По умолчанию именем первой размерности является 'Row'. Имена размерности являются свойством таблиц. Можно получить доступ к именам размерности tblA с помощью tblA.Properties.DimensionNames.

  • Если tblA является расписанием, то rowDimName является именем вектора времен строки. Можно задать его имя, когда вы создаете расписание, такое как Time или Date. Можно также получить доступ к именам размерности с помощью tblA.Properties.DimensionNames.

Пример: Если таблица T имеет имена строки, и вы поменяли имя первой размерности с помощью T.Properties.DimensionName{1} = 'Name', то sortrows(T,'Name') сортирует таблицу по имени строки.

Пример: Если расписание, TT имеет временной вектор под названием Date, то sortrows(TT,'Date') сортирует расписание на датах и временах, которые содержит Date.

Типы данных: char

Сортируя переменные, заданные как скалярное целое число, вектор целых чисел, имени переменной, массива ячеек имен переменных или логического вектора. vars указывает на табличные переменные к виду.

Если элемент vars является положительным целым числом, то sortrows сортирует соответствующую переменную в tblA в порядке возрастания. Если элемент vars является отрицательным целым числом, то sortrows сортирует соответствующую переменную в tblA в порядке убывания.

Пример: sortrows(tblA,{'Height','Weight'}) сортирует строки tblA в порядке возрастания, сначала переменной Height, затем переменной Weight, чтобы повредить связи.

Пример: виды sortrows(tblA,[1 4]) первой переменной tblA в порядке возрастания, затем виды четвертой переменной, чтобы повредить связи.

Пример: sortrows(TT,{'Time','X'}) сортирует времена строки расписания TT в порядке возрастания сначала, затем виды табличной переменной 'X', чтобы повредить связи.

Типы данных: double | single | char | cell | logical

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: sortrows(A,'MissingPlacement','last')

Размещение отсутствующих значений (NaN, NaT, <undefined> и missing) заданный как пара, разделенная запятой, состоящая из 'MissingPlacement' и одно из следующего:

  • 'auto' Недостающие элементы помещаются в последний раз для порядка по возрастанию и сначала для порядка убывания.

  • 'first' — Недостающие элементы занимают первое место.

  • 'last' — Недостающие элементы помещаются в последний раз.

Метод сравнения элемента, заданный как пара, разделенная запятой, состоящая из 'ComparisonMethod' и одно из следующего:

  • 'auto' Сортировка располагает в ряд A real(A), когда A действителен, и вид abs(A), когда A является комплексным.

  • действительный Сортировка располагает в ряд A real(A), когда A является действительным или комплексным. Если столбец A имеет элементы с равными действительными частями, то используйте imag(A), чтобы повредить связи.

  • abs Сортировка располагает в ряд A abs(A), когда A является действительным или комплексным. Если столбец A имеет элементы с равным значением, то используйте angle(A) в интервале (-π,π], чтобы повредить связи.

Выходные аргументы

свернуть все

Сортированный массив, возвращенный как вектор, матрица или многомерный массив. B одного размера как A.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration

Отсортированная таблица, возвращенная как таблица или расписание с теми же переменными как tblA.

Типы данных: table | timetable

Сортировка индекса, возвращенного как индексный вектор. Индекс вида описывает перестановку строк во входе, таким образом что B = A(index,:).

Типы данных: double

Расширенные возможности

Смотрите также

| | |

Представлено до R2006a