Main Content

mod

Il resto dopo la divisione (operazione modulo)

Sintassi

Descrizione

esempio

b = mod(a,m) restituisce il resto dopo la divisione di a per m, dove a è il dividendo e m è il divisore. Questa funzione è spesso chiamata operazione modulo che può essere espressa come b = a - m.*floor(a./m). La funzione mod segue la convenzione che mod(a,0) restituisce a.

Esempi

comprimi tutto

Calcolare 23 modulo 5.

b = mod(23,5)
b = 3

Trovare il resto dopo la divisione per un vettore di numeri interi e il divisore 3.

a = 1:5;
m = 3;
b = mod(a,m)
b = 1×5

     1     2     0     1     2

Trovare il resto dopo la divisione per un insieme di numeri interi che include sia valori positivi che negativi. Si noti che i risultati diversi da zero sono sempre positivi se il divisore è positivo.

a = [-4 -1 7 9];
m = 3;
b = mod(a,m)
b = 1×4

     2     2     1     0

Trovare il resto dopo la divisione con un divisore negativo per un insieme di numeri interi che include sia valori positivi che negativi. Si noti che i risultati diversi da zero sono sempre negativi se il divisore è negativo.

a = [-4 -1 7 9];
m = -3;
b = mod(a,m)
b = 1×4

    -1    -1    -2     0

Trovare il resto dopo la divisione per diversi angoli utilizzando un modulo di 2*pi. Si noti che, quando possibile, mod cerca di compensare gli effetti dell'arrotondamento in virgola mobile per produrre risultati numeri interi esatti.

theta = [0.0 3.5 5.9 6.2 9.0 4*pi];
m = 2*pi;
b = mod(theta,m)
b = 1×6

         0    3.5000    5.9000    6.2000    2.7168         0

Argomenti di input

comprimi tutto

Dividendo, specificato come scalare, vettore, matrice, array multidimensionale, tabella o orario. a deve essere un array di valori reali di qualsiasi tipo numerico. Gli input a e m devono avere la stessa dimensione o dimensioni compatibili (ad esempio, a è una matrice M x N e m è uno scalare o un vettore riga di 1 x N). Per maggiori informazioni, vedere Compatible Array Sizes for Basic Operations.

Se a è un array di duration e m è un array numerico, i valori in m sono trattati come numeri di giorni di 24 ore.

Se un input ha un tipo di dato intero, l'altro input deve avere lo stesso tipo di dato intero o essere uno scalare double.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | duration | char | table | timetable

Divisore, specificato come scalare, vettore, matrice, array multidimensionale, tabella o orario. m deve essere un array di valori reali di qualsiasi tipo numerico. Gli input a e m devono avere la stessa dimensione o dimensioni compatibili (ad esempio, a è una matrice M x N e m è uno scalare o un vettore riga di 1 x N). Per maggiori informazioni, vedere Compatible Array Sizes for Basic Operations.

Se m è un array di duration e a è un array numerico, i valori in a sono trattati come numeri di giorni di 24 ore.

Se un input ha un tipo di dato intero, l'altro input deve avere lo stesso tipo di dato intero o essere uno scalare double.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | duration | char | table | timetable

Ulteriori informazioni

comprimi tutto

Differenze tra mod e rem

Il concetto di resto dopo la divisione non è definito in modo univoco e le due funzioni mod e rem calcolano ciascuna una variazione diversa. La funzione mod produce un risultato pari a zero o con lo stesso segno del divisore. La funzione rem produce un risultato pari a zero o con lo stesso segno del dividendo.

Un'altra differenza riguarda la convenzione per cui il divisore è zero. La funzione mod segue la convenzione che mod(a,0) restituisce a, laddove la funzione rem segue la convenzione che rem(a,0) restituisce NaN.

Entrambe le varianti hanno i loro utilizzi. Ad esempio, nell'elaborazione dei segnali, la funzione mod è utile nel contesto dei segnali periodici perché il suo output è periodico (con periodo uguale al divisore).

Relazioni di congruenza

La funzione mod è utile per le relazioni di congruenza: a e b sono congruenti (mod m) se e solo se mod(a,m) == mod(b,m). Ad esempio, 23 e 13 sono congruenti (mod 5).

Riferimenti

[1] Knuth, Donald E. The Art of Computer Programming. Vol. 1. Addison Wesley, 1997 pp.39–40.

Funzionalità estese

Cronologia versioni

Introduzione prima di R2006a

espandi tutto

Vedi anche