CustomFloat

Числовой объект с пользовательским типом данных с плавающей точкой

Описание

Используйте CustomFloat объект задать тип числовых данных с плавающей точкой с заданным размером слова и длиной мантиссы. Типы данных с плавающей точкой заданы CustomFloat объект придерживается стандарта IEEE 754-2008. Для получения дополнительной информации о типах данных с плавающей точкой смотрите Числа с плавающей запятой.

Создание

Описание

пример

x = CustomFloat(v) возвращает CustomFloat объект со значением v. Выходной объект имеет тот же размер слова, длину мантиссы и длину экспоненты как вход v.

пример

x = CustomFloat(v, type) возвращает CustomFloat объект со значением v и тип с плавающей точкой задан type.

пример

x = CustomFloat(v, WordLength, MantissaLength) возвращает CustomFloat объект с заданным размером слова и длиной мантиссы.

пример

x = CustomFloat(v, WordLength, MantissaLength, 'typecast') возвращает CustomFloat объект с комбинацией двоичных разрядов v и заданная длина мантиссы. Размер слова должен совпадать с размером слова входа v.

x = CustomFloat(cf) возвращает CustomFloat объект со значением и свойствами типа данных CustomFloat объект cf.

Входные параметры

развернуть все

Значение CustomFloat объект в виде скаляра, вектора, матрицы или многомерного массива.

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

Тип данных с плавающей точкой CustomFloat объект в виде любого 'double'единственный, или 'half'.

Свойства этих типов получены в итоге в следующей таблице.

ВводРазмер словаДлина мантиссы
double6452
single3223
half1610

Типы данных: char

Пользовательский тип с плавающей точкой в виде CustomFloat объект.

Свойства

развернуть все

Скалярное целое число, представляющее значение смещения для экспоненты.

Это свойство не может быть изменено непосредственно, однако можно изменить это свойство путем изменения WordLength и MantissaLength свойства, которые влияют на ExponentLength свойство. ExponentBias поскольку тип данных с плавающей точкой вычисляется посредством следующего уравнения:

ExponentBias = 2e-1-1(1)
где e представляет ExponentLength.

Типы данных: double

Количество битов, представляющих экспоненту. Вы не можете отредактировать это свойство напрямую, однако можно изменить длину экспоненты путем изменения MantissaLength и WordLength свойства.

ExponentLength, MantissaLength, и WordLength свойства связаны посредством следующего уравнения:

WordLength = 1+MantissaLength+ExponentLength(2)

ExponentLength должен быть меньше 31 бита.

Типы данных: double

Количество битов, представляющих мантиссу в виде скалярного целого числа.

ExponentLength, MantissaLength, и WordLength свойства связаны посредством следующего уравнения.

WordLength = 1+MantissaLength+ExponentLength(3)

Примечание

ExponentLength должен быть меньше 31 бита.

Пример: custfloat.MantissaLength = 14;

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

Общее количество битов в типе данных в виде скалярного целого числа.

ExponentLength, MantissaLength, и WordLength свойства связаны посредством следующего уравнения.

WordLength = 1+MantissaLength+ExponentLength(4)

Примечание

ExponentLength должен быть меньше 31 бита.

Пример: custfloat.WordLength = 28;

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

Функции объекта

развернуть все

absАбсолютное значение и комплексная амплитуда
ceilОкругление в сторону плюс бесконечности
complexСоздание массива комплексных чисел
conjСопряженное комплексное число
coshГиперболический косинус
expЭкспоненциал
fixОкругление в сторону нуля
floorОкругление в сторону минус бесконечности
fmaУмножьте и добавьте, что сплавленное использование умножается, добавляет подход
hypotКвадратный корень из суммы квадратов (гипотенуза)
ldivideЛевое деление массива
logНатуральный логарифм
log2Основывайте 2 логарифма и рассечение числа с плавающей запятой
log10Десятичный логарифм (базируются 10),
minusВычитание
modОстаток после деления (операция с модулем)
mtimesУмножение матриц
ndimsКоличество измерений массива
plusДобавьте числа, добавьте строки
pow10Основывайте 10 степеней и числа полуточности шкалы
pow2Основывайте 2 степени и числа с плавающей запятой шкалы
powerПоэлементная степень
rdivideДеление правого массива
realДействительная часть комплексного числа
remОстаток после деления
roundОкругление к самому близкому десятичному числу или целому числу
rsqrtВзаимный квадратный корень
sqrtКвадратный корень
tanhГиперболический тангенс
timesУмножение
uminusУнарный минус
uplusУнарный плюс
binБинарное представление без знака сохраненного целого числа fi объект
doubleМассивы с двойной точностью
fiСоздайте фиксированную точку числовой объект
int88-битные массивы целого числа со знаком
int1616-битные массивы целого числа со знаком
int3232-битные массивы целого числа со знаком
int6464-битные массивы целого числа со знаком
isnanОпределите, какие элементы массива являются NaN
isrealОпределите, использует ли массив комплексное устройство хранения данных
singleМассивы с одинарной точностью
uint88-битные массивы беззнаковых целых чисел
uint1616-битные массивы беззнаковых целых чисел
uint3232-битные массивы беззнаковых целых чисел
uint6464-битные массивы беззнаковых целых чисел
eqОпределите равенство
geОпределите больше, чем или равный
gtОпределите больше, чем
leОпределите меньше чем или равный
ltОпределите меньше, чем
neОпределите неравенство
catКонкатенация массивов
ctransposeКомплексное сопряженное транспонирование
horzcatГоризонтальная конкатенация для разнородных массивов
isfiniteОпределите, какие элементы массива конечны
isinfОпределите, какие элементы массива бесконечны
normВекторные и матричные нормы
numelКоличество элементов массива
reshapeИзменение размерности массива
sizeРазмер массивов
transposeТранспонируйте вектор или матрицу
vertcatВертикальная конкатенация для разнородных массивов
dispОтобразите значение переменной

Примеры

свернуть все

В этом примере показано, как создать CustomFloat объект.

v = pi;
x = CustomFloat(v)
x = 
    3.1416


           Data Type: Floating-point: Double-precision
          WordLength:  64
      MantissaLength:  52
      ExponentLength:  11
        ExponentBias: 1023

Поскольку вход к CustomFloat конструктор был двойным, типом данных CustomFloat объект, x, также двойное. Если значение передало в CustomFloat функция является синглом, затем получившийся CustomFloat объект будет также иметь тип данных с плавающей точкой с одинарной точностью.

v = single(pi);
x = CustomFloat(v)
x = 
    3.1416


           Data Type: Floating-point: Single-precision
          WordLength:  32
      MantissaLength:  23
      ExponentLength:   8
        ExponentBias: 127

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

v = pi;
x = CustomFloat(v,'half')
x = 
    3.1406


           Data Type: Floating-point: Half-precision
          WordLength:  16
      MantissaLength:  10
      ExponentLength:   5
        ExponentBias:  15

Задайте размер слова и длину мантиссы в CustomFloat функция.

v = pi;
wl = 16;
ml = 4;
x = CustomFloat(v,wl,ml)
x = 
    3.1250


           Data Type: Floating-point: Custom-precision
          WordLength:  16
      MantissaLength:   4
      ExponentLength:  11
        ExponentBias: 1023

Сравните различие между значением с двойной точностью и значением CustomFloat возразите, когда вы изменяете длину мантиссы.

err = zeros(1,12);
for ml = 1:12
    x = CustomFloat(v,wl,ml);
    err(ml) = v-double(x);    
end

plot(err);
title('Error: v - double(x)');
ylabel('Error');
xlabel('Mantissa Length');

Figure contains an axes. The axes with title Error: v - double(x) contains an object of type line.

Используя 'typecast' входной параметр, CustomFloat функция создает CustomFloat объект с комбинацией двоичных разрядов входного значения, и заданный размер слова и длина мантиссы.

Задайте значение с одинарной точностью. Типы данных с плавающей точкой с одинарной точностью имеют 32-битный размер слова и 23-битную длину мантиссы. Просмотрите бинарное представление значения с одинарной точностью.

v = single(pi);
bit_pattern = bin(CustomFloat(v))
bit_pattern = 
'01000000010010010000111111011011'

Задайте CustomFloat объект, который имеет ту же комбинацию двоичных разрядов как входное значение, но имеет различную длину мантиссы.

x = CustomFloat(v, 32, 20, 'typecast')
x = 
   50.1239


           Data Type: Floating-point: Custom-precision
          WordLength:  32
      MantissaLength:  20
      ExponentLength:  11
        ExponentBias: 1023

Просмотрите бинарное представление CustomFloat объект, и сравнивает его с комбинацией двоичных разрядов входного значения с одинарной точностью.

bit_pattern2 = bin(x)
bit_pattern2 = 
'01000000010010010000111111011011'
same = strcmp(bit_pattern, bit_pattern2)
same = logical
   1

Ограничения

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

Введенный в R2020a