MATLAB - Numéros

MATLAB prend en charge diverses classes numériques qui incluent des entiers signés et non signés et des nombres à virgule flottante simple précision et double précision. Par défaut, MATLAB stocke toutes les valeurs numériques sous forme de nombres à virgule flottante double précision.

Vous pouvez choisir de stocker n'importe quel nombre ou tableau de nombres sous forme d'entiers ou de nombres à simple précision.

Tous les types numériques prennent en charge les opérations de tableau de base et les opérations mathématiques.

Conversion en divers types de données numériques

MATLAB fournit les fonctions suivantes pour convertir en différents types de données numériques -

Fonction Objectif
double Convertit en nombre double précision
Célibataire Convertit en un nombre de précision unique
int8 Convertit en entier signé 8 bits
int16 Convertit en entier signé 16 bits
int32 Convertit en entier signé 32 bits
int64 Convertit en entier signé 64 bits
uint8 Convertit en entier non signé 8 bits
uint16 Convertit en entier non signé 16 bits
uint32 Convertit en entier non signé 32 bits
uint64 Convertit en entier non signé 64 bits

Exemple

Créez un fichier de script et tapez le code suivant -

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

Lorsque vous exécutez le fichier, il affiche le résultat suivant -

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

Exemple

Prolongeons un peu plus l'exemple précédent. Créez un fichier de script et tapez le code suivant -

x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)

Lorsque vous exécutez le fichier, il affiche le résultat suivant -

x =

   38  23  45

x =

   38  23  45

x = 
{
   [1,1] = 38
   [1,2] = 23
   [1,3] = 45
}

Les plus petits et les plus grands nombres entiers

Les fonctions intmax() et intmin() renvoie les valeurs maximum et minimum qui peuvent être représentées avec tous les types de nombres entiers.

Les deux fonctions prennent le type de données entier comme argument, par exemple, intmax (int8) ou intmin (int64) et renvoient les valeurs maximale et minimale que vous pouvez représenter avec le type de données entier.

Exemple

L'exemple suivant illustre comment obtenir les valeurs les plus petites et les plus grandes d'entiers. Créez un fichier de script et écrivez-y le code suivant -

% 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'))

Lorsque vous exécutez le fichier, il affiche le résultat suivant -

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

Les plus petits et plus grands nombres à virgule flottante

Les fonctions realmax() et realmin() renvoie les valeurs maximales et minimales pouvant être représentées par des nombres à virgule flottante.

Les deux fonctions lorsqu'elles sont appelées avec l'argument 'single', renvoient les valeurs maximum et minimum que vous pouvez représenter avec le type de données simple précision et lorsqu'elles sont appelées avec l'argument 'double', renvoient les valeurs maximum et minimum que vous pouvez représenter avec le type de données double précision.

Exemple

L'exemple suivant illustre comment obtenir les nombres à virgule flottante les plus petits et les plus grands. Créez un fichier de script et écrivez-y le code suivant -

% 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'))

Lorsque vous exécutez le fichier, il affiche le résultat suivant -

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