Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Sort elements of symbolic vectors or matrices

`Y = sort(X)`

```
[Y,I] =
sort(___)
```

`___= sort(X,dim)`

`___= sort(___,'descend')`

`[`

shows the indices that each element
of `Y`

,`I`

] =
sort(___)`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.

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]

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

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`

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]

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`

uses internal sorting rules.

Was this topic helpful?