Spec-Zone.ru › Octave 9

Далее: Пользовательские типы данных, Наверх: Типы данных [Оглавление][Индекс]

3.1 Встроенные типы данных ¶

Стандартные встроенные типы данных включают вещественные и комплексные скаляры и матрицы, диапазоны, символьные строки, тип структуры данных и ячейные массивы. Дополнительные встроенные типы данных могут быть добавлены в будущих версиях. Если вам нужен специализированный тип данных, который в настоящее время не предоставляется как встроенный, рекомендуется написать свой собственный пользовательский тип данных и предоставить его для распространения в будущих выпусках Octave.

Тип данных переменной можно определить и изменить с помощью следующих функций.

: classname = class (obj) ¶
: cls = class (s, classname) ¶
: cls = class (s, classname, parent1, …) ¶

Возвращает класс объекта obj или создаёт класс с полями из структуры s и именем (строкой) classname.

Дополнительные аргументы задают список родительских классов, от которых происходит наследование нового класса.

См. также: typeinfo, isa.

: tf = isa (obj, classname) ¶

Возвращает true, если obj является объектом класса classname.

classname также может быть одной из следующих категорий классов:

"float"

Значение с плавающей точкой, включающее классы "double" и "single".

"integer"

Целочисленное значение, включающее классы (u)int8, (u)int16, (u)int32, (u)int64.

"numeric"

Числовое значение, представляющее собой либо значение с плавающей точкой, либо целое число.

Если classname является ячейным массивом строк, возвращается логический массив того же размера, содержащий true для каждого класса, к которому принадлежит obj.

См. также: class, typeinfo.

: 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; они указывают, что запрашивается комплексное значение результата. Комплексные массивы хранятся в памяти как последовательные пары вещественных чисел. Размеры целочисленных типов задаются их битовыми отсчётами. Как логические, так и символьные типы обычно имеют ширину один байт; однако это не гарантируется C++. Если ваша система соответствует стандарту IEEE, single и double будут иметь ширину 4 байта и 8 байта соответственно. "logical" недопустимо для class.

Если входной массив — это строка, то результат — строка, иначе — столбец.

Если длина в битах x не делится на длину в битах class, возникает ошибка.

Пример использования typecast на машине с малой эндианностью:

x = uint16 ([1, 65535]);
typecast (x, "uint8")
⇒ [   1,   0, 255, 255]

См. также: cast, bitpack, bitunpack, swapbytes.

: y = swapbytes (x) ¶

Меняет порядок байтов на значениях, преобразуя их из литл-эндиан в биг-эндиан и наоборот.

Например:

swapbytes (uint16 (1:4))
⇒   256   512   768  1024

См. также: typecast, cast.

: 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 — строка, иначе — столбец.

См. также: bitunpack, typecast.

: y = bitunpack (x) ¶

Возвращает логический массив y, соответствующий битовым шаблонам x.

x должен принадлежать одному из встроенных числовых классов:

"double"
"single"
"char"
"int8"
"int16"
"int32"
"int64"
"uint8"
"uint16"
"uint32"
"uint64"

Результат — это строка, если x — строка, иначе — столбец.

См. также: bitpack, typecast.

  • Числовые объекты
  • Пропущенные данные
  • Строковые объекты
  • Объекты структуры данных
  • Объекты ячейных массивов

Далее: Пользовательские типы данных, Наверх: Типы данных [Оглавление][Индекс]

© 1996–2023 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.2.0/Built_002din-Data-Types.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API