exponenta event banner

fi

Построение числового объекта с фиксированной точкой

Описание

Чтобы назначить тип данных с фиксированной точкой номеру или переменной, создайте fi с использованием fi конструктор. Числовые атрибуты и математические правила можно задать в конструкторе или с помощью команды numerictype и fimath объекты.

Создание

Описание

пример

a = fi возвращает fi объект без значения, 16-битовая длина слова и 15-битная длина дроби.

пример

a = fi(v) возвращает объект с фиксированной точкой и значением v и значения свойств по умолчанию.

пример

a = fi(v,s) возвращает объект с фиксированной точкой и подписью (с подписью или без подписи) s.

пример

a = fi(v,s,w) создает объект с фиксированной точкой с длиной слова, указанной w.

пример

a = fi(v,s,w,f) создает объект с фиксированной точкой с длиной дроби, указанной f.

пример

a = fi(v,s, w,slope,bias) создает объект с фиксированной точкой с помощью масштабирования уклона и смещения.

пример

a = fi(v,s, w,slopeadjustmentfactor,fixedexponent,bias) создает объект с фиксированной точкой с помощью масштабирования уклона и смещения.

пример

a = fi(v,T) создает объект с фиксированной точкой и значением vи свойства числового типа, T.

пример

a = fi(___,F) создает объект с фиксированной точкой с параметрами формул, заданными fimath объект F.

пример

a = fi(___,Name,Value) создает объект с фиксированной точкой со значениями свойств, заданными одним или несколькими Name,Value аргументы пары. Name должно отображаться внутри отдельных кавычек (''). Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,...,NameN,ValueN.

Входные аргументы

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

Значение fi объект, указанный как скаляр, вектор, матрица или многомерный массив.

Значение выходного сигнала fi - это значение входного значения, квантованного в соответствии с типом данных, указанным в fi конструктор.

Можно указать неграничные значения -Inf, Inf, и NaN как значение, только если полностью указать числовой тип fi объект. Когда fi указывается как числовой тип с фиксированной точкой,

  • NaN сопоставляет с 0.

  • Когда 'OverflowAction' имущества fi объект имеет значение 'Wrap', -Inf, и Inf сопоставить с 0.

  • Когда 'OverflowAction' имущества fi объект имеет значение 'Saturate', Inf соответствует наибольшему представимому значению, и -Inf сопоставляется с наименьшим представимым значением.

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

Подписанность fi , указанный как логическое значение. Значение 1, или true, указывает тип данных со знаком. Значение 0, или false, указывает неподписанный тип данных.

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

Длина слова в битах fi , указанный как скалярное целое число.

fi объект имеет ограничение длины слова 65535 бит.

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

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

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

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

действительное значение = (наклон × целое число) + смещение

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

Смещение масштабирования, указанное как скаляр. Следующее уравнение представляет действительное значение масштабированного числа смещения наклона.

действительное значение = (наклон × целое число) + смещение

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

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

уклон = коэффициент регулировки уклона × 2фиксированная экспонента

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

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

уклон = коэффициент регулировки уклона × 2фиксированная экспонента

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

Свойства числового типа fi объект, указанный как numerictype объект. Дополнительные сведения см. в разделе numerictype.

Математические свойства фиксированной точки fi объект, указанный как fimath объект. Дополнительные сведения см. в разделе fimath.

Примеры

свернуть все

Создать подпись fi объект со значением piдлина слова, равная восьми битам, и длина дроби, равная 3 битам.

a = fi(pi,1,8,3)
a = 
    3.1250

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 3

Создание массива fi объекты с длиной слова 16 бит и длиной дроби 12 бит.

a = fi((magic(3)/10), 1, 16, 12)
a=3×3 object
    0.8000    0.1001    0.6001
    0.3000    0.5000    0.7000
    0.3999    0.8999    0.2000

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 12

При указании только значения и подписи fi по умолчанию длина слова равна 16 битам, а длина дроби устанавливается для достижения наилучшей возможной точности без переполнения.

a = fi(pi, 1)
a = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

Если длина дроби не указана, введите аргумент f, длина фракции fi по умолчанию используется длина дроби, которая обеспечивает наилучшую точность.

a = fi(pi,1,8)
a = 
    3.1562

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 5

Длина фракции fi объект a равно пяти, поскольку для представления целочисленной части значения при подписании типа данных требуется три бита. Если fi объект использует неподписанный тип данных, только два бита необходимы для представления целочисленной части, оставляя шесть дробных битов.

b = fi(pi,0,8)
b = 
    3.1406

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 6

Действительное значение масштабированного числа смещения наклона представлено следующим образом:

действительное значение = (наклон × целое число) + смещение

Создание fi объект, который использует масштабирование наклона и смещения, включают slope и bias аргументы после длины слова в конструкторе.

a = fi(pi, 1, 16, 3, 2)
a = 
     2

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 3
                  Bias: 2

DataTypeMode имущества fi объект, aявляется slope and bias scaling.

Когда аргумент ввода значения, v, из fi объект не является двойным, и свойства длины слова или дроби не задаются, результат fi объект сохраняет числовой тип ввода, v.

Создать fi объект из встроенного целого числа

Если вход является встроенным целым числом, атрибуты с фиксированной точкой соответствуют атрибутам типа integer.

v1 = uint32(5);
a1 = fi(v1)
a1 = 
     5

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 32
        FractionLength: 0
v2 = int8(5);
a2 = fi(v2)
a2 = 
     5

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 0

Создать fi объект из fi объект

Если входным значением является fi объект, вывод использует одну и ту же длину слова, длину дроби и сигнатуру ввода fi объект.

v = fi(pi, 1, 24, 12);
a = fi(v)
a = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 24
        FractionLength: 12

Создать fi объект из логического

Когда вход v является логическим, DataTypeMode свойство выходного документа fi объект - Boolean.

v = true;
a = fi(v)
a = 
   1

          DataTypeMode: Boolean

Создать fi объект из одного

Если вход одиночный, DataTypeMode свойство вывода: Single.

v = single(pi);
a = fi(v)
a = 
    3.1416

          DataTypeMode: Single

Арифметические атрибуты fi определяются объектом fimath объект, который присоединен к этому fi объект.

Создать fimath и укажите OverflowAction, RoundingMethod, и ProductMode свойства.

F = fimath('OverflowAction', 'Wrap', 'RoundingMethod','Floor', 'ProductMode','KeepMSB')
F = 
        RoundingMethod: Floor
        OverflowAction: Wrap
           ProductMode: KeepMSB
     ProductWordLength: 32
               SumMode: FullPrecision

Создать fi и укажите fimath объект, F, в конструкторе.

a = fi(pi, F)
a = 
    3.1415

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

        RoundingMethod: Floor
        OverflowAction: Wrap
           ProductMode: KeepMSB
     ProductWordLength: 32
               SumMode: FullPrecision

Используйте removefimath для удаления связанной функции fimath и восстановить математические настройки до значений по умолчанию.

a = removefimath(a)
a = 
    3.1415

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

A numerictype объект содержит всю информацию о типе данных fi объект. По транзитивности, numerictype свойства также являются свойствами fi объекты.

Можно создать fi объект, использующий все свойства существующего numerictype путем указания numerictype объект в fi конструктор.

T = numerictype(0,24,16)
T =


          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 24
        FractionLength: 16
a = fi(pi, T)
a = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 24
        FractionLength: 16

При использовании представления двоичной точки для числа с фиксированной точкой длина дроби может быть больше длины слова. В этом случае между двоичной точкой и первой значащей двоичной цифрой имеются неявные ведущие нули (для положительных чисел) или единицы (для отрицательных чисел).

Рассмотрим значение со знаком с длиной слова 8, длиной дроби 10 и запомненным целым значением 5. Вычислите реальное значение, используя следующее уравнение.

действительное значение = сохраненная целочисленная длина 2-х дробей

realWorldValue = 5*2^(-10)
realWorldValue = 0.0049

Создать подпись fi объект со значением realWorldValueдлина слова 8 бит и длина дроби 10 бит.

a = fi(realWorldValue, 1, 8, 10)
a = 
    0.0049

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 10

Получить сохраненное целое значение a с использованием int функция.

int(a)
ans = int8
    5

Используйте bin для просмотра сохраненного целого значения в двоичном формате.

bin(a)
ans = 
'00000101'

Поскольку длина дроби на два бита больше длины слова, двоичное значение сохраненного целого числа равно X.XX00000101, где X является местозаполнителем неявных нулей. 0.0000000101 (набор из двух предметов) эквивалентно 0,0049 (десятичное число).

При использовании представления двоичной точки для числа с фиксированной точкой длина дроби может быть отрицательной. В этом случае между двоичной точкой и первой значащей двоичной цифрой имеются неявные нули (для положительных чисел) или единицы (для отрицательных чисел).

Рассмотрим тип данных со знаком с длиной слова 8, длиной дроби -2 и запомненным целым значением 5. Вычислите сохраненное целое значение, используя следующее уравнение.

действительное значение = сохраненная целочисленная длина 2-х дробей

realWorldValue = 5*2^(2)
realWorldValue = 20

Создать подпись fi объект со значением realWorldValueдлина слова 8 бит и длина дроби -2 бита.

a = fi(realWorldValue, 1, 8, -2)
a = 
    20

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: -2

Получить сохраненное целое значение a с использованием int функция.

int(a)
ans = int8
    5

Получение двоичного значения a с использованием bin функция.

bin(a)
ans = 
'00000101'

Поскольку длина дроби отрицательна, двоичное значение сохраненного целого числа равно 00000101XX, где X является местозаполнителем неявных нулей. 0000010100 (набор из двух предметов) эквивалентно 20 (десятичное число).

Можно задать математические свойства, такие как округление и режимы переполнения во время создания fi объект.

a = fi(pi, 'RoundingMethod', 'Floor', 'OverflowAction', 'Wrap')
a = 
    3.1415

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

        RoundingMethod: Floor
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision

RoundingMethod и OverflowAction свойства являются свойствами fimath объект. Задание этих свойств в fi конструктор связывает локальный fimath объект с fi объект.

Используйте removefimath для удаления локального fimath и вернуть математическим свойствам значения по умолчанию.

a = removefimath(a)
a = 
    3.1415

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

При использовании fi объект как индекс, значение fi объект должен быть целым числом.

Настройте массив для индексирования в.

x = 10:-1:1;

Создать целое число fi и использовать его для индексации в x.

a = fi(3);
y = x(a)
y = 8

Использовать fi как индекс в for петля

Создать fi объекты для использования в качестве индекса цикла for. Значения индексов должны быть целыми числами.

a = fi(1, 0, 8, 0);
b = fi(2, 0, 8, 0);
c = fi(10, 0, 8, 0);

for x = a:b:c
    x
end
x = 
     1

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 0
x = 
     3

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 0
x = 
     5

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 0
x = 
     7

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 0
x = 
     9

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 0

fipref объект определяет атрибуты отображения и регистрации для всех fi объекты. Используйте DataTypeOverride установка fipref объект для переопределения fi объекты с двойниками, одиночками или масштабированными двойниками.

Сохранить текущий fipref для последующего восстановления.

fp = fipref;
initialDTO = fp.DataTypeOverride;

Создать fi объект с настройками по умолчанию и оригиналом fipref настройки.

a = fi(pi)
a = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

Включить переопределение типа данных для удвоения и создать новый fi объект без указания его DataTypeOverride для использования параметров переопределения типа данных, заданных с помощью fipref.

fipref('DataTypeOVerride', 'TrueDoubles')
ans = 
                NumberDisplay: 'RealWorldValue'
           NumericTypeDisplay: 'full'
                FimathDisplay: 'full'
                  LoggingMode: 'Off'
             DataTypeOverride: 'TrueDoubles'
    DataTypeOverrideAppliesTo: 'AllNumericTypes'

a = fi(pi)
a = 
    3.1416

          DataTypeMode: Double

Теперь создайте fi объект и установить его DataTypeOverride установка для off таким образом, он игнорирует параметры переопределения типа данных fipref объект.

b = fi(pi, 'DataTypeOverride', 'Off')
b = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

Восстановите параметры fipref, сохраненные в начале примера.

fp.DataTypeOverride = initialDTO;

Использование нечисловых значений -Inf, Inf, и NaN в качестве значений с фиксированной точкой fi, необходимо полностью указать числовой тип объекта с фиксированной точкой. Автоматическое масштабирование с наилучшей точностью не поддерживается для этих значений.

Насыщение при переполнении

Когда числовой тип fi объект задается для насыщения при переполнении, затем Inf соответствует наибольшему представимому значению указанного числового типа, и -Inf сопоставляется с наименьшим представимым значением. NaN соответствует нулю.

x = [-inf nan inf];
a = fi(x,1,8,0,'OverflowAction','Saturate')
b = fi(x,0,8,0,'OverflowAction','Saturate')
a = 

  -128     0   127

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 0

        RoundingMethod: Nearest
        OverflowAction: Saturate
           ProductMode: FullPrecision
               SumMode: FullPrecision

b = 

     0     0   255

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 0

        RoundingMethod: Nearest
        OverflowAction: Saturate
           ProductMode: FullPrecision
               SumMode: FullPrecision

Перенос при переполнении

Когда числовой тип fi указан объект для переноса при переполнении, затем -Inf, Inf, и NaN сопоставить с нулем.

x = [-inf nan inf];
a = fi(x,1,8,0,'OverflowAction','Wrap')
b = fi(x,0,8,0,'OverflowAction','Wrap')
a = 

     0     0     0

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 0

        RoundingMethod: Nearest
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision

b = 

     0     0     0

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 0

        RoundingMethod: Nearest
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision

Вопросы совместимости

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

В R2020b изменилось поведение

Расширенные возможности

.

Создание кода HDL
Создание кода Verilog и VHDL для проектов FPGA и ASIC с использованием Coder™ HDL.

Представлен в R2006a