MATLAB - Liczby

MATLAB obsługuje różne klasy numeryczne, które obejmują liczby całkowite ze znakiem i bez znaku oraz liczby zmiennoprzecinkowe o pojedynczej i podwójnej precyzji. Domyślnie MATLAB przechowuje wszystkie wartości liczbowe jako liczby zmiennoprzecinkowe o podwójnej precyzji.

Możesz wybrać zapisywanie dowolnej liczby lub tablicy liczb jako liczb całkowitych lub jako liczb o pojedynczej precyzji.

Wszystkie typy liczbowe obsługują podstawowe operacje tablicowe i operacje matematyczne.

Konwersja na różne numeryczne typy danych

MATLAB zapewnia następujące funkcje do konwersji na różne numeryczne typy danych -

Funkcjonować Cel, powód
podwójnie Konwertuje na liczbę o podwójnej precyzji
pojedynczy Konwertuje na liczbę o pojedynczej precyzji
int8 Konwertuje na 8-bitową liczbę całkowitą ze znakiem
int16 Konwertuje na 16-bitową liczbę całkowitą ze znakiem
int32 Konwertuje na 32-bitową liczbę całkowitą ze znakiem
int64 Konwertuje na 64-bitową liczbę całkowitą ze znakiem
uint8 Konwertuje na 8-bitową liczbę całkowitą bez znaku
uint16 Konwertuje na 16-bitową liczbę całkowitą bez znaku
uint32 Konwertuje na 32-bitową liczbę całkowitą bez znaku
uint64 Konwertuje na 64-bitową liczbę całkowitą bez znaku

Przykład

Utwórz plik skryptu i wpisz następujący kod -

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

Po uruchomieniu pliku pokazuje następujący wynik -

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

Przykład

Rozszerzmy nieco poprzedni przykład. Utwórz plik skryptu i wpisz następujący kod -

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

Po uruchomieniu pliku pokazuje następujący wynik -

x =

   38  23  45

x =

   38  23  45

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

Najmniejsze i największe liczby całkowite

Funkcje intmax() i intmin() zwracają maksymalne i minimalne wartości, które mogą być reprezentowane przez wszystkie typy liczb całkowitych.

Obie funkcje przyjmują jako argument typ danych integer, na przykład intmax (int8) lub intmin (int64) i zwracają maksymalne i minimalne wartości, które można reprezentować za pomocą typu danych integer.

Przykład

Poniższy przykład ilustruje, jak uzyskać najmniejsze i największe wartości liczb całkowitych. Utwórz plik skryptu i napisz w nim następujący kod -

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

Po uruchomieniu pliku pokazuje następujący wynik -

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

Najmniejsze i największe liczby zmiennoprzecinkowe

Funkcje realmax() i realmin() zwracają maksymalne i minimalne wartości, które można przedstawić za pomocą liczb zmiennoprzecinkowych.

Obie funkcje wywoływane z argumentem „single” zwracają maksymalne i minimalne wartości, które można przedstawić za pomocą typu danych o pojedynczej precyzji, a wywoływane z argumentem „double” zwracają maksymalne i minimalne wartości, które można przedstawić za pomocą typ danych podwójnej precyzji.

Przykład

Poniższy przykład ilustruje, jak uzyskać najmniejsze i największe liczby zmiennoprzecinkowe. Utwórz plik skryptu i napisz w nim następujący kod -

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

Po uruchomieniu pliku wyświetla następujący wynik -

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