Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

sort

Ordinare gli elementi dell'array

Descrizione

esempio

B = sort(A) ordina gli elementi di A in ordine crescente.

  • Se A è un vettore, sort(A) ordina gli elementi del vettore.

  • Se A è una matrice, sort(A) tratta le colonne di A come vettori e ordina ciascuna colonna.

  • Se A è un array multidimensionale, sort(A) opera lungo la prima dimensione dell’array la cui grandezza non è uguale a 1, trattando gli elementi come vettori.

esempio

B = sort(A,dim) restituisce gli elementi ordinati di A lungo la dimensione dim. Ad esempio, se A è una matrice, sort(A,2) ordina gli elementi di ciascuna riga.

esempio

B = sort(___,direction) restituisce gli elementi ordinati di A nell'ordine specificato da direction utilizzando una qualsiasi delle sintassi precedenti. 'ascend' indica l'ordine crescente (predefinito) e 'descend' indica l'ordine decrescente.

esempio

B = sort(___,Name,Value) specifica ulteriori parametri per l'ordinamento. Ad esempio, sort(A,'ComparisonMethod','abs') ordina gli elementi di A per magnitudine.

esempio

[B,I] = sort(___) restituisce inoltre una raccolta di vettori di indici per qualsiasi sintassi precedente. I ha la stessa dimensione di A e descrive la disposizione degli elementi di A in B lungo la dimensione ordinata. Ad esempio, se A è un vettore, B = A(I).

Esempi

comprimi tutto

Creare un vettore riga e ordinare i relativi elementi in ordine crescente.

A = [9 0 -7 5 3 8 -10 4 2];
B = sort(A)
B = 1×9

   -10    -7     0     2     3     4     5     8     9

Creare una matrice e ordinare ciascuna riga in ordine crescente.

A = [3 6 5; 7 -2 4; 1 0 -9]
A = 3×3

     3     6     5
     7    -2     4
     1     0    -9

B = sort(A,2)
B = 3×3

     3     5     6
    -2     4     7
    -9     0     1

Creare una matrice e ordinare ciascuna colonna in ordine decrescente.

A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3]
A = 4×4

    10   -12     4     8
     6    -9     8     0
     2     3    11    -2
     1     1     9     3

B = sort(A,'descend')
B = 4×4

    10     3    11     8
     6     1     9     3
     2    -9     8     0
     1   -12     4    -2

A partire dalla release R2017a, è possibile creare array di stringhe utilizzando i doppi apici e ordinarli utilizzando la funzione sort. Ordinare le stringhe in ciascuna colonna di un array di stringhe secondo l'ordine del dizionario Unicode®.

A = ["Santos","Burns"; ...
     "Jones","Morita"; ...
     "Petrov","Adams"];
B = sort(A)
B = 3x2 string
    "Jones"     "Adams" 
    "Petrov"    "Burns" 
    "Santos"    "Morita"

Ordinare le stringhe in ciascuna riga.

B = sort(A,2)
B = 3x2 string
    "Burns"    "Santos"
    "Jones"    "Morita"
    "Adams"    "Petrov"

Creare un array di valori datetime e ordinarli in ordine crescente, ossia dalla più recente alla meno recente data di calendario.

ds = {'2012-12-22';'2063-04-05';'1992-01-12'};
A = datetime(ds,'Format','yyyy-MM-dd')
A = 3x1 datetime
   2012-12-22
   2063-04-05
   1992-01-12

[B,I] = sort(A)
B = 3x1 datetime
   1992-01-12
   2012-12-22
   2063-04-05

I = 3×1

     3
     1
     2

B elenca le date ordinate e I contiene gli indici corrispondenti di A.

Accedere agli elementi ordinati dell'array originale direttamente utilizzando l'array di indici I.

A(I)
ans = 3x1 datetime
   1992-01-12
   2012-12-22
   2063-04-05

Creare due vettori riga che contengano i dati correlati negli elementi corrispondenti.

X = [3 6 4 2 1 5];
Y = ["yellow" "purple" "green" "orange" "red" "blue"];

Ordinare prima il vettore X, quindi ordinare il vettore Y nello stesso ordine di X.

[Xsorted,I] = sort(X)
Xsorted = 1×6

     1     2     3     4     5     6

I = 1×6

     5     4     1     3     6     2

Ysorted = Y(I)
Ysorted = 1x6 string
    "red"    "orange"    "yellow"    "green"    "blue"    "purple"

Creare un array 2x2x2 e ordinare gli elementi in ordine crescente lungo la terza dimensione.

A(:,:,1) = [2 3; 1 6];
A(:,:,2) = [-1 9; 0 12];
A
A = 
A(:,:,1) =

     2     3
     1     6


A(:,:,2) =

    -1     9
     0    12

B = sort(A,3)
B = 
B(:,:,1) =

    -1     3
     0     6


B(:,:,2) =

     2     9
     1    12

Utilizzare A(:), la rappresentazione in colonna di A, per ordinare tutti gli elementi di A.

B = sort(A(:))
B = 8×1

    -1
     0
     1
     2
     3
     6
     9
    12

Ordinare gli elementi di un vettore complesso in base alle loro parti reali. Per impostazione predefinita, la funzione sort ordina i valori complessi in base alla loro magnitudine e interrompe le parità utilizzando gli angoli di fase. Specificare il valore di 'ComparisonMethod' come 'real' per ordinare invece i valori complessi in base alle loro parti reali. Per gli elementi con parti reali uguali, sort interrompe le parità in base alle loro parti immaginarie.

A = [1+2i 3+1i 1i 0 -1i];
B = sort(A,'ComparisonMethod','real')
B = 1×5 complex

   0.0000 - 1.0000i   0.0000 + 0.0000i   0.0000 + 1.0000i   1.0000 + 2.0000i   3.0000 + 1.0000i

Argomenti di input

comprimi tutto

Array di input, specificato come vettore, matrice o array multidimensionale.

  • Se A è uno scalare, sort(A) restituisce A.

  • Se A è complesso, per impostazione predefinita, sort ordina gli elementi per magnitudine. Se più elementi hanno la stessa magnitudine, gli elementi vengono ordinati in base all'angolo di fase sull'intervallo (-π, π).

  • Se A è un array di celle di vettori di caratteri o un array di stringa, sort(A) ordina gli elementi secondo l'ordine di codifica dello schema di codifica dei caratteri UTF-16. L'ordinamento differenzia le maiuscole dalle minuscole. Per maggiori informazioni sull'ordinamento degli array di caratteri e di stringhe, vedere Ordine di ordinamento per array di caratteri e array di stringhe.

  • Se A è un array di stringhe, sort riordina gli elementi dell'array, ma non i caratteri all'interno delle stringhe.

  • Se A è un array categorico, l'ordine dell'ordinamento si basa sull'ordine di categoria restituito da categories(A).

Tipi di dati: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration
Supporto numeri complessi:

Dimensione lungo la quale operare, specificata come scalare intero positivo. Se non viene specificato alcun valore, l'impostazione predefinita è la prima dimensione dell'array la cui dimensione non è uguale a 1.

  • Considerare una matrice A. sort(A,1) ordina gli elementi nelle colonne di A.

    sort(A,1) column-wise operation

  • sort(A,2) ordina gli elementi nelle righe di A.

    sort(A,2) row-wise operation

sort restituisce A se dim è maggiore di ndims(A). dim non è supportato quando A è un array di celle, ossia sort opera solo lungo la prima dimensione dell'array la cui dimensione non è uguale a 1.

Tipi di dati: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Direzione di ordinamento, specificata come 'ascend' o 'descend'. direction non è supportato quando A è un array di celle, ossia sort ordina solo in ordine crescente.

Argomenti nome-valore

Specificare coppie opzionali di argomenti come Name1=Value1,...,NameN=ValueN, dove Name è il nome dell’argomento e Value è il valore corrispondente. Gli argomenti nome-valore devono comparire dopo gli altri argomenti, mentre l'ordine delle coppie non è rilevante.

Per le release antecedenti alla R2021a, utilizzare le virgole per separare ciascun nome e valore e includere Name tra virgolette.

Esempio sort(A,'MissingPlacement','last')

Collocazione dei valori mancanti (NaN, NaT, <undefined> e missing) specificata come coppia separata da virgole, composta da 'MissingPlacement' e uno dei seguenti elementi:

  • 'auto': gli elementi mancanti vengono posizionati per ultimi nell'ordine crescente e per primi per nell'ordine decrescente.

  • 'first': gli elementi mancanti vengono posizionati per primi.

  • 'last': gli elementi mancanti vengono posizionati per ultimi.

Metodo di confronto degli elementi, specificato come coppia separata da virgole, composta da 'ComparisonMethod' e uno dei seguenti elementi:

  • 'auto': ordina A per real(A) quando A è reale e per abs(A) quando A è complesso.

  • 'real': ordina A per real(A) quando A è reale o complesso. Se A presenta elementi con parti reali uguali, utilizzare imag(A) per interrompere le parità.

  • 'abs': ordina A per abs(A) quando A è reale o complesso. Se A presenta elementi con magnitudine uguale, utilizzare angle(A) nell'intervallo (-π,π] per interrompere le parità.

Argomenti di output

comprimi tutto

Array ordinato, restituito come vettore, matrice array multidimensionale. B ha la stessa grandezza ed è dello stesso tipo di A.

Tipi di dati: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration

Indice di ordinamento, restituito come vettore, matrice o array multidimensionale. I ha la stessa grandezza di A. I vettori di indice sono orientati lungo la stessa dimensione su cui opera sort. Ad esempio, se A è una matrice 2x3, [B,I] = sort(A,2) ordina gli elementi in ciascuna riga di A. L'output I è una raccolta di vettori di indici di riga 1x3 che descrivono la riorganizzazione di ciascuna riga di A.

La funzione sort utilizza un algoritmo di ordinamento stabile. Quindi, quando l'input contiene valori ripetuti, l'indice di ordinamento conserva l'ordine originale dell'input, indipendentemente dalla direzione dell'ordinamento. Ad esempio, se A = [1 2 1 2], [Ba,Ia] = sort(A,'ascend') restituisce l'indice di ordinamento Ia = [1 3 2 4] e [Bd,Id] = sort(A,'descend') restituisce l'indice di ordinamento Id = [2 4 1 3].

Ulteriori informazioni

comprimi tutto

Ordine di ordinamento per array di caratteri e array di stringhe

MATLAB® memorizza i caratteri come Unicode® utilizzando lo schema di codifica dei caratteri UTF-16. Gli array di caratteri e gli array di stringhe vengono ordinati in base all'ordine a punti del codice UTF-16. Per i caratteri che sono anche caratteri ASCII, questo ordine significa che le lettere maiuscole vengono prima delle lettere minuscole. Anche le cifre e alcuni segni di punteggiatura precedono le lettere.

Suggerimenti

  • La funzione sortrows fornisce un'ulteriore flessibilità per il sotto-ordinamento su più colonne di input di matrici o tabelle.

  • La funzione sort e gli operatori relazionali utilizzano ordinamenti diversi per i numeri complessi. Per maggiori informazioni, vedere Operazioni relazionali.

Funzionalità estese

Cronologia versioni

Introduzione prima di R2006a