exponenta event banner

вид

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

Описание

пример

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около-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, содержащий символьные числа, переменные и функции.

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, -sym(2); sym(1/4), f(x)]

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

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

(x-214x)[x, -sym(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))[-sym(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