exponenta event banner

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 смотрит на третий столбец и так далее.

rng default;
A = floor(rand([6 7])*100);
A(1:4,1) = 95;  A(5:6,1) = 76;  A(2:4,2) = 7;  A(3,3) = 48
A = 6×7

    95    27    95    79    67    70    69
    95     7    48    95    75     3    31
    95     7    48    65    74    27    95
    95     7    14     3    39     4     3
    76    15    42    84    65     9    43
    76    97    91    93    17    82    38

B = sortrows(A) 
B = 6×7

    76    15    42    84    65     9    43
    76    97    91    93    17    82    38
    95     7    14     3    39     4     3
    95     7    48    65    74    27    95
    95     7    48    95    75     3    31
    95    27    95    79    67    70    69

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

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

    95     7    48    95    75     3    31
    95     7    48    65    74    27    95
    95     7    14     3    39     4     3
    76    15    42    84    65     9    43
    95    27    95    79    67    70    69
    76    97    91    93    17    82    38

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

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

    76    97    91    93    17    82    38
    76    15    42    84    65     9    43
    95     7    14     3    39     4     3
    95     7    48    95    75     3    31
    95    27    95    79    67    70    69
    95     7    48    65    74    27    95

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

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

    95     7    48    95    75     3    31
    76    97    91    93    17    82    38
    76    15    42    84    65     9    43
    95    27    95    79    67    70    69
    95     7    48    65    74    27    95
    95     7    14     3    39     4     3

index = 6×1

     2
     6
     5
     1
     3
     4

Создайте матрицу, содержащую комплексные числа, и сортируйте строки матрицы в порядке возрастания на основе элементов в первом столбце. Поскольку величины 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
    {'Germany'}    {'Lukas'  }
    {'USA'    }    {'William'}
    {'USA'    }    {'Andrew' }
    {'Germany'}    {'Andreas'}
    {'USA'    }    {'Olivia' }
    {'Germany'}    {'Julia'  }

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

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

C = sortrows(A,[1 2],{'ascend' 'descend'})
C = 6x2 cell
    {'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×2 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 является именем аргумента и 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 является сложным.

  • 'real' - Сортировка строк 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