sort

Сортировка элементов символьных массивов

Описание

пример

Y = sort(X) сортирует элементы X в возрастающем лексикографическом порядке.

  • Если X является вектором, тогда sort(X) сортирует векторные элементы X.

  • Если X является матрицей, тогда sort(X) обрабатывает столбцы X как векторы и сортировка каждого столбца независимо.

  • Если X является многомерным массивом, затем sort(X) действует вдоль первого измерения массива, размер которого не равен 1, обрабатывая элементы как векторы.

пример

Y = sort(X,dim) сортирует элементы X вдоль размерности dim. Для примера, если X является двумерной матрицей, затем sort(X,1) сортирует элементы каждого столбца X, и sort(X,2) сортирует элементы каждой строки.

пример

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

пример

[Y,I] = sort(___) также возвращает набор индекса векторов для любого из предыдущих синтаксисов. I - тот же размер, что и X и описывает расположение элементов X в Y вдоль отсортированной размерности. Для примера, если X является m-by- n матрица, и вы отсортируете элементы каждого столбца (dim = 1), затем каждый столбец I - вектор индекса отсортированного столбца X, таким что

for j = 1:n
    Y(:,j) = X(I(:,j),j); 
end

Примеры

свернуть все

Создайте символьный вектор-строку и отсортируйте его элементы в порядке возрастания.

syms a b c d e
sort([7 e 1 c 5 d a b])
ans = (157abcde)[sym (1), sym (5), sym (7), a, b, c, d, e]

При сортировке элементов массива матрицы sort может работать с столбцами или строками этой матрицы.

Создайте символьную матрицу.

X = magic(3)*sym('a')
X = 

(8aa6a3a5a7a4a9a2a)[8 * a, a, 6 * a; 3 * a, 5 * a, 7 * a; 4 * a, 9 * a, 2 * a]

Отсортируйте матрицу X. По умолчанию в sort команда сортирует элементы каждого столбца.

Y = sort(X)
Y = 

(3aa2a4a5a6a8a9a7a)[3 * a, a, 2 * a; 4 * a, 5 * a, 6 * a; 8 * a, 9 * a, 7 * a]

Чтобы отсортировать элементы каждой строки, установите значение dim опция для 2.

Y = sort(X,2)
Y = 

(a6a8a3a5a7a2a4a9a)[a, 6 * a, 8 * a; 3 * a, 5 * a, 7 * a; 2 * a, 4 * a, 9 * a]

Создайте символьную матрицу.

X = magic(3)*sym('a')
X = 

(8aa6a3a5a7a4a9a2a)[8 * a, a, 6 * a; 3 * a, 5 * a, 7 * a; 4 * a, 9 * a, 2 * a]

Отсортируйте элементы каждой строки в порядке убывания.

Y = sort(X,2,'descend')
Y = 

(8a6aa7a5a3a9a4a2a)[8 * a, 6 * a, a; 7 * a, 5 * a, 3 * a; 9 * a, 4 * a, 2 * a]

Чтобы найти индексы, которые каждый элемент массива матрицы Y имел в исходной матрице X, вызов sort с двумя выходными аргументами.

Создайте символьную матрицу X.

X = magic(3)*sym('a')
X = 

(8aa6a3a5a7a4a9a2a)[8 * a, a, 6 * a; 3 * a, 5 * a, 7 * a; 4 * a, 9 * a, 2 * a]

Сортировка каждого столбца X и возвращает индексы отсортированных элементов в I. Каждый столбец I содержит предустановленные позиции записей в Y.

[Y,I] = sort(X)
Y = 

(3aa2a4a5a6a8a9a7a)[3 * a, a, 2 * a; 4 * a, 5 * a, 6 * a; 8 * a, 9 * a, 7 * a]

I = 3×3

     2     1     3
     3     2     1
     1     3     2

Отсортируйте символьный вектор X который содержит действительные и комплексные числа. Когда X содержит символические вещественные и комплексные числа, sort(X) возвращает отсортированные вещественные числа, за которыми следуют отсортированные комплексные числа на основе их вещественных частей.

X = sort(sym([2 -1/2 3+4i 5i 4+3i]))
X = 

(-1225i3+4i4+3i)[-sym (1/2), sym (2), sym ('5i'), sym (3) + 4i, sym (4) + 3i]

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

syms x y f(x);
X(:,:,1) = [y 1; 1/3 x];
X(:,:,2) = [x -2; 1/4 f(x)];
X
X(:,:,1) = 

(y113x)[y, sym (1); sym (1/3), x]

X(:,:,2) = 

(x-214f(x))[x, -сим (2); sym (1/4), f (x)]

Отсортируйте его элементы в порядке возрастания по третьей размерности.

Y = sort(X,3)
Y(:,:,1) = 

(x-214x)[x, -сим (2); sym (1/4), x]

Y(:,:,2) = 

(y113f(x))[y, sym (1); sym (1/3), f (x)]

Использование X(:), представление столбца X, чтобы отсортировать все элементы X.

Y = sort(X(:))
Y = 

(-214131xxyf(x))[-сим (2); sym (1/4); sym (1/3); sym (1); x; x; y; f (x)]

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

свернуть все

Входной массив, заданный как символьный вектор, матрица или многомерный массив. sort использует следующие правила:

  • Если X содержит только символические вещественные числа, которые являются рациональными, тогда sort(X) сортирует элементы численно.

  • Если X содержит только символические комплексные числа с рациональными вещественными и мнимыми частями, тогда sort(X) сортирует элементы сначала по их вещественным частям, затем по их мнимым частям, чтобы разорвать связи.

  • Если X содержит только символьные переменные, тогда sort(X) сортирует элементы в алфавитном порядке.

  • Если X содержит смесь символьных чисел (с рациональными частями) и переменных, затем sort(X) возвращает следующую последовательность: отсортированные вещественные числа, отсортированные комплексные числа и отсортированные переменные.

  • Если X содержит символические иррациональные числа, выражения и функции, сравнение и сортировка элементов могут быть вычислительно сложными. Поэтому sort использует внутренние правила сортировки для оптимизации ее эффективности.

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

Рассмотрим двумерный входной массив X:

  • sort(X,1) сортирует элементы в столбцах X.

    Sorting of a 2-by-3 matrix along the columns.

  • sort(X,2) сортирует элементы в строках X.

    Sorting of a 2-by-3 matrix along the rows.

sort возвращает X если dim больше ndims(X).

Направление сортировки, заданное как 'ascend' или 'descend'.

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

свернуть все

Отсортированный массив, возвращенный как символьный вектор, матрица или многомерный массив. Y - тот же размер и тип, что и X.

Сортировка индекса, возвращенная как символьный вектор, матрица или многомерный массив. I - тот же размер, что и X. Векторы индекса ориентированы вдоль той же размерности, что и sort действует на. Для примера, если X - матрица 2 на 3, затем [Y,I] = sort(X,2) сортирует элементы в каждой строке X. Область выхода I - набор векторов индекса строками 1 на 3, который содержит предопределенные положения каждой строки Y.

Совет

  • Вызов sort для массивов чисел, которые не являются символьными объектами, MATLAB® sort функция.

  • sort функция сортирует символьные комплексные числа по-другому по сравнению с комплексными числами с плавающей точкой MATLAB. Для символьных входных X который содержит комплексные числа, sort(X) сортирует комплексные числа сначала по их вещественным частям, затем по их мнимым частям, чтобы разорвать связи. Для входных X с плавающей точкой, по умолчанию sort(X) сортирует комплексные числа по их величине, далее указываются их углы фазы в интервале (−

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