MATLAB - Numeri
MATLAB supporta varie classi numeriche che includono interi con e senza segno e numeri in virgola mobile a precisione singola e doppia. Per impostazione predefinita, MATLAB memorizza tutti i valori numerici come numeri in virgola mobile a doppia precisione.
È possibile scegliere di memorizzare qualsiasi numero o matrice di numeri come numeri interi o come numeri a precisione singola.
Tutti i tipi numerici supportano operazioni di base con array e operazioni matematiche.
Conversione in vari tipi di dati numerici
MATLAB fornisce le seguenti funzioni per convertire in vari tipi di dati numerici:
Funzione | Scopo |
---|---|
Doppio | Converte in un numero a doppia precisione |
single | Converte in un numero a precisione singola |
int8 | Converte in un intero con segno a 8 bit |
int16 | Converte in un intero con segno a 16 bit |
int32 | Converte in un intero con segno a 32 bit |
int64 | Converte in un intero con segno a 64 bit |
uint8 | Converte in un intero senza segno a 8 bit |
uint16 | Converte in un intero senza segno a 16 bit |
uint32 | Converte in un intero senza segno a 32 bit |
uint64 | Converte in un intero senza segno a 64 bit |
Esempio
Crea un file di script e digita il codice seguente:
x = single([5.32 3.47 6.28]) .* 7.5
x = double([5.32 3.47 6.28]) .* 7.5
x = int8([5.32 3.47 6.28]) .* 7.5
x = int16([5.32 3.47 6.28]) .* 7.5
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
Quando esegui il file, mostra il seguente risultato:
x =
39.900 26.025 47.100
x =
39.900 26.025 47.100
x =
38 23 45
x =
38 23 45
x =
38 23 45
x =
38 23 45
Esempio
Estendiamo ancora un po 'l'esempio precedente. Crea un file di script e digita il codice seguente:
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)
Quando esegui il file, mostra il seguente risultato:
x =
38 23 45
x =
38 23 45
x =
{
[1,1] = 38
[1,2] = 23
[1,3] = 45
}
Numeri interi più piccoli e più grandi
Le funzioni intmax() e intmin() restituisce i valori massimo e minimo che possono essere rappresentati con tutti i tipi di numeri interi.
Entrambe le funzioni accettano il tipo di dati intero come argomento, ad esempio, intmax (int8) o intmin (int64) e restituiscono i valori massimo e minimo che è possibile rappresentare con il tipo di dati intero.
Esempio
L'esempio seguente illustra come ottenere i valori più piccoli e più grandi di interi. Crea un file di script e scrivi il seguente codice al suo interno:
% displaying the smallest and largest signed integer data
str = 'The range for int8 is:\n\t%d to %d ';
sprintf(str, intmin('int8'), intmax('int8'))
str = 'The range for int16 is:\n\t%d to %d ';
sprintf(str, intmin('int16'), intmax('int16'))
str = 'The range for int32 is:\n\t%d to %d ';
sprintf(str, intmin('int32'), intmax('int32'))
str = 'The range for int64 is:\n\t%d to %d ';
sprintf(str, intmin('int64'), intmax('int64'))
% displaying the smallest and largest unsigned integer data
str = 'The range for uint8 is:\n\t%d to %d ';
sprintf(str, intmin('uint8'), intmax('uint8'))
str = 'The range for uint16 is:\n\t%d to %d ';
sprintf(str, intmin('uint16'), intmax('uint16'))
str = 'The range for uint32 is:\n\t%d to %d ';
sprintf(str, intmin('uint32'), intmax('uint32'))
str = 'The range for uint64 is:\n\t%d to %d ';
sprintf(str, intmin('uint64'), intmax('uint64'))
Quando esegui il file, mostra il seguente risultato:
ans = The range for int8 is:
-128 to 127
ans = The range for int16 is:
-32768 to 32767
ans = The range for int32 is:
-2147483648 to 2147483647
ans = The range for int64 is:
0 to 0
ans = The range for uint8 is:
0 to 255
ans = The range for uint16 is:
0 to 65535
ans = The range for uint32 is:
0 to -1
ans = The range for uint64 is:
0 to 18446744073709551616
Numeri in virgola mobile più piccoli e più grandi
Le funzioni realmax() e realmin() restituisce i valori massimo e minimo che possono essere rappresentati con numeri in virgola mobile.
Entrambe le funzioni, quando chiamate con l'argomento 'single', restituiscono i valori massimo e minimo che puoi rappresentare con il tipo di dati a precisione singola e quando chiamate con l'argomento 'double', restituiscono i valori massimo e minimo che puoi rappresentare con il tipo di dati a doppia precisione.
Esempio
L'esempio seguente illustra come ottenere i numeri in virgola mobile più piccoli e più grandi. Crea un file di script e scrivi il seguente codice al suo interno:
% displaying the smallest and largest single-precision
% floating point number
str = 'The range for single is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('single'), -realmin('single'), ...
realmin('single'), realmax('single'))
% displaying the smallest and largest double-precision
% floating point number
str = 'The range for double is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('double'), -realmin('double'), ...
realmin('double'), realmax('double'))
Quando si esegue il file, viene visualizzato il seguente risultato:
ans = The range for single is:
-3.40282e+38 to -1.17549e-38 and
1.17549e-38 to 3.40282e+38
ans = The range for double is:
-1.79769e+308 to -2.22507e-308 and
2.22507e-308 to 1.79769e+308