3.1 Встроенные типы данных
Стандартные встроенные типы данных — это вещественные и комплексные скаляры и матрицы, диапазоны, символьные строки, тип структур данных и массивы ячеек. В будущих версиях могут быть добавлены дополнительные встроенные типы данных. Если вам нужен специализированный тип данных, который в настоящее время не предоставляется как встроенный тип, вы можете создать собственный пользовательский тип данных и внести его для распространения в будущем выпуске Octave.
Тип данных переменной можно определить и изменить с помощью следующих функций.
-
:
classname =class(obj) -
:
cls =class(s, classname) -
:
cls =class(s, classname, parent1, …) -
Возвращает класс объекта obj или создает класс с полями из структуры s и именем (строкой) classname.
Дополнительные аргументы задают список родительских классов, от которых наследуется новый класс.
-
:
tf =isa(obj, classname) -
Возвращает true, если obj является объектом класса classname.
classname также может быть одной из следующих категорий классов:
"float"-
Число с плавающей запятой, включающее классы
"double"и"single". "integer"-
Целое число, включающее классы (u)int8, (u)int16, (u)int32, (u)int64.
"numeric"Числовое значение, представляющее собой число с плавающей запятой или целое число.
Если classname — это массив ячеек со строками, возвращается логический массив того же размера, содержащий true для каждого класса, которому принадлежит obj.
-
:
y =cast(x, "type") -
:
y =cast(x, "like", var) -
Преобразует x в тип данных type.
Входной аргумент x может быть скаляром, вектором или матрицей класса, который можно преобразовать в целевой класс (см. ниже).
Если после
"like"указана переменная var, x преобразуется в тот же тип данных и атрибут разреженности. Если var является комплексным числом, x также будет комплексным.var может быть, а type может обозначать любой из следующих встроенных числовых классов:
"double" "single" "logical" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64"
Значение x может быть изменено, чтобы оно соответствовало диапазону нового типа.
Примеры:
cast (-5, "uint8") ⇒ 0 cast (300, "int8") ⇒ 127
Примечание по программированию: эта функция предполагает, что у объекта x есть метод преобразования с именем type. Пользовательские классы могут реализовывать только часть полного списка типов, приведенного выше. В таком случае для получения нужного типа может потребоваться дважды вызвать cast. Например, преобразование в double реализовано почти всегда, а преобразование в uint8 может быть не реализовано. В таком случае сработает следующий код:
cast (cast (user_defined_val, "double"), "uint8")
См. также: typecast, int8, uint8, int16, uint16, int32, uint32, int64, uint64, double, single, logical, char, class, typeinfo.
-
:
y =typecast(x, "class") -
Возвращает новый массив y, полученный интерпретацией данных x в памяти как данных числового класса class.
И класс x, и class должны быть одним из встроенных числовых классов:
"logical" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64" "double" "single" "double complex" "single complex"
последние два используются только с class; они указывают, что запрашивается комплексный результат. Комплексные массивы хранятся в памяти как последовательные пары вещественных чисел. Размеры целочисленных типов задаются числом битов. logical и char обычно имеют ширину в один байт, однако C++ этого не гарантирует. Если ваша система соответствует стандарту IEEE, single и double будут иметь ширину 4 и 8 байт соответственно.
"logical"нельзя использовать для class.Если входной аргумент является вектором-строкой, возвращаемое значение также будет вектором-строкой; в противном случае это будет вектор-столбец.
Если длина x в битах не делится на длину class в битах, возникает ошибка.
Пример использования typecast на машине с порядком байтов от младшего к старшему:
x = uint16 ([1, 65535]); typecast (x, "uint8") ⇒ [ 1, 0, 255, 255]
-
:
y =swapbytes(x) -
Меняет порядок байтов значений, преобразуя порядок от младшего к старшему и наоборот.
Например:
swapbytes (uint16 (1:4)) ⇒ 256 512 768 1024
-
:
y =bitpack(x, class) -
Возвращает новый массив y, полученный интерпретацией логического массива x как необработанных битовых шаблонов данных числового класса class.
class должен быть одним из встроенных числовых классов:
"double" "single" "double complex" "single complex" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64"
Число элементов x должно делиться на длину class в битах. Если это не так, лишние биты отбрасываются. Биты идут в порядке возрастания значимости, т. е.
x(1)— это бит 0,x(2)— это бит 1 и т. д.Результат является вектором-строкой, если x — вектор-строка; в противном случае это вектор-столбец.
-
:
y =bitunpack(x) -
Возвращает логический массив y, соответствующий необработанным битовым шаблонам x.
x должен принадлежать к одному из встроенных числовых классов:
"double" "single" "char" "int8" "int16" "int32" "int64" "uint8" "uint16" "uint32" "uint64"
Результат является вектором-строкой, если x — вектор-строка; в противном случае это вектор-столбец.
- Числовые объекты
- Отсутствующие данные
- Строковые объекты
- Объекты структур данных
- Объекты массивов ячеек
© 1996–2026 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.4.0/Built_002din-Data-Types.html