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