Documentation Center

  • Trial Software
  • Product Updates

sort

Sort elements of symbolic vectors or matrices

Syntax

Description

example

Y = sort(X) sorts the elements of a symbolic vector or matrix in ascending order. If X is a vector, sort(X) sorts the elements of X in lexicographic order. If X is a matrix, sort(X) sorts each column of X.

example

[Y,I] = sort(___) shows the indices that each element of Y had in the original vector or matrix X.

If X is an m-by-n matrix and you sort elements of each column (dim = 2), then each column of I is a permutation vector of the corresponding column of X, such that

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

If X is a two-dimensional matrix, and you sort the elements of each column, the array I shows the row indices that the elements of Y had in the original matrix X. If you sort the elements of each row, I shows the original column indices.

example

___= sort(X,dim) sorts the elements of X along the dimension dim. Thus, if X is a two-dimensional matrix, then sort(X,1) sorts elements of each column of X, and sort(X,2) sorts elements of each row.

example

___= sort(___,'descend') sorts X in descending order. By default, sort uses ascending order.

Examples

Sort the Elements of a Vector

By default, sort sorts the element of a vector or a matrix in ascending order.

Sort the elements of the following symbolic vector:

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

Find Indices That the Elements of a Sorted Matrix Had in the Original Matrix

To find the indices that each element of a new vector or matrix Y had in the original vector or matrix X, call sort with two output arguments.

Sort the matrix X returning the matrix of indices that each element of the sorted matrix had in X:

X = sym(magic(3));
[Y, I] = sort(X)
Y =
[ 3, 1, 2]
[ 4, 5, 6]
[ 8, 9, 7]

I =
     2     1     3
     3     2     1
     1     3     2

Sort a Matrix Along Its Columns and Rows

When sorting elements of a matrix, sort can work along the columns or rows of that matrix.

Sort the elements of the following symbolic matrix:

X = sym(magic(3))
X =
[ 8, 1, 6]
[ 3, 5, 7]
[ 4, 9, 2]

By default, the sort command sorts elements of each column:

sort(X)
ans =
[ 3, 1, 2]
[ 4, 5, 6]
[ 8, 9, 7]

To sort the elements of each row, use set the value of the dim option to 2:

sort(X,2)
ans =
[ 1, 6, 8]
[ 3, 5, 7]
[ 2, 4, 9]

Sort in Descending Order

sort can sort the elements of a vector or a matrix in descending order.

Sort the elements of this vector in descending order:

syms a b c d e
sort([7 e 1 c 5 d a b], 'descend')
ans =
[ e, d, c, b, a, 7, 5, 1]

Sort the elements of each column of this matrix X in descending order:

X = sym(magic(3))
sort(X,'descend')
X =
[ 8, 1, 6]
[ 3, 5, 7]
[ 4, 9, 2]
 
ans =
[ 8, 9, 7]
[ 4, 5, 6]
[ 3, 1, 2]

Now, sort the elements of each row of X in descending order:

sort(X, 2, 'descend')
ans =
[ 8, 6, 1]
[ 7, 5, 3]
[ 9, 4, 2]

Input Arguments

expand all

X — Input that needs to be sortedsymbolic vector | symbolic matrix

Input that needs to be sorted, specified as a symbolic vector or matrix.

dim — Dimension to operate alongpositive integer

Dimension to operate along, specified as a positive integer. The default value is 1. If dim exceeds the number of dimensions of X, then sort(X,dim) returns X, and [Y,I] = sort(X,dim) returns Y = X and I = ones(size(X)).

Output Arguments

expand all

Y — Sorted outputsymbolic vector | symbolic matrix

Sorted output, returned as a symbolic vector or matrix.

I — Indices that elements of Y had in Xsymbolic vector | symbolic matrix

Indices that elements of Y had in X, returned as a symbolic vector or matrix. [Y,I] = sort(X,dim) also returns matrix I = ones(size(X)) if the value dim exceeds the number of dimensions of X.

More About

expand all

Tips

  • Calling sort for vectors or matrices of numbers that are not symbolic objects invokes the MATLAB® sort function.

  • For complex input X, sort compares elements by their magnitudes (complex moduli), computed with abs(X). If complex numbers have the same complex modulus, sort compares their phase angles, angle(X).

  • If you use 'ascend' instead of 'descend', then sort returns elements in ascending order, as it does by default.

  • sort uses the following rules:

    • It sorts symbolic numbers and floating-point numbers numerically.

    • It sorts symbolic variables alphabetically.

    • In all other cases, including symbolic expressions and functions, sort relies on the internal order that MuPAD® uses to store these objects.

See Also

|

Was this topic helpful?