Числа в MATLAB: типы, хранение и преобразование
MATLAB поддерживает различные числовые классы: знаковые и беззнаковые целые числа, числа одинарной и двойной точности с плавающей точкой. По умолчанию все числовые значения хранятся как двойной точности (double).
Вы можете хранить числа или массивы как целые или одинарной точности (single). Все числовые типы поддерживают базовые операции с массивами и математические операции.
Преобразование к различным числовым типам
MATLAB предоставляет функции для преобразования:
| Функция | Назначение |
|---|---|
| double | Преобразование к двойной точности |
| single | Преобразование к одинарной точности |
| int8 | 8-битное знаковое целое |
| int16 | 16-битное знаковое целое |
| int32 | 32-битное знаковое целое |
| int64 | 64-битное знаковое целое |
| uint8 | 8-битное беззнаковое целое |
| uint16 | 16-битное беззнаковое целое |
| uint32 | 32-битное беззнаковое целое |
| uint64 | 64-битное беззнаковое целое |
Пример
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
Результат:
x = 39.900 26.025 47.100 (single) x = 39.900 26.025 47.100 (double) x = 38 23 45 (int8, int16, int32, int64 — округление)
Обратите внимание: целочисленные типы округляют результат.
Дополнительный пример
x = int32([5.32 3.47 6.28]) .* 7.5 x = int64([5.32 3.47 6.28]) .* 7.5 x = num2cell(x)
Результат:
x = 38 23 45
x = 38 23 45
x = { [1,1] = 38; [1,2] = 23; [1,3] = 45 }
Минимальные и максимальные целые значения
Функции intmax() и intmin() возвращают максимальное и минимальное значения для целочисленных типов. Аргумент — тип данных (например, intmax('int8')).
Пример
% Знаковые целые
sprintf('int8: %d to %d', intmin('int8'), intmax('int8'))
sprintf('int16: %d to %d', intmin('int16'), intmax('int16'))
sprintf('int32: %d to %d', intmin('int32'), intmax('int32'))
sprintf('int64: %d to %d', intmin('int64'), intmax('int64'))
% Беззнаковые целые
sprintf('uint8: %d to %d', intmin('uint8'), intmax('uint8'))
sprintf('uint16: %d to %d', intmin('uint16'), intmax('uint16'))
sprintf('uint32: %d to %d', intmin('uint32'), intmax('uint32'))
sprintf('uint64: %d to %d', intmin('uint64'), intmax('uint64'))
Результат:
int8: -128 to 127 int16: -32768 to 32767 int32: -2147483648 to 2147483647 int64: -9223372036854775808 to 9223372036854775807 uint8: 0 to 255 uint16: 0 to 65535 uint32: 0 to 4294967295 uint64: 0 to 18446744073709551615
Минимальные и максимальные значения с плавающей точкой
Функции realmax() и realmin() возвращают пределы для чисел с плавающей точкой. Аргумент 'single' или 'double' задает точность.
Пример
% single
sprintf('single: %g to %g and %g to %g', -realmax('single'), -realmin('single'), realmin('single'), realmax('single'))
% double
sprintf('double: %g to %g and %g to %g', -realmax('double'), -realmin('double'), realmin('double'), realmax('double'))
Результат:
single: -3.40282e+38 to -1.17549e-38 and 1.17549e-38 to 3.40282e+38 double: -1.79769e+308 to -2.22507e-308 and 2.22507e-308 to 1.79769e+308
MATLAB
- Числа и системы счисления: понимание различия и его практическое значение
- MATLAB: Комплексный обзор ведущей среды численных вычислений
- Переменные в MATLAB: Основы, примеры и работа с векторами/матрицами
- Основные команды MATLAB для эффективных вычислений
- Типы данных в MATLAB: Полное руководство с примерами
- Операторы MATLAB: Арифметические, логические, битовые и операции над множествами
- Матрицы в MATLAB: Создание, индексация, удаление строк/столбцов и операции
- MATLAB: Мастерство работы с многомерными и специальными массивами
- Оператор двоеточия в MATLAB: создание векторов и эффективная итерация
- Строки в MATLAB: создание, манипуляции и функции