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

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

real-world value=(slope×integer)+bias

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

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

real-world value=(slope×integer)+bias

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

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

slope=slope adjustment factor×2fixed exponent

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

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

slope=slope adjustment factor×2fixed exponent

Типы данных: 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

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

realworldvalue=(slope×integer)+bias

Как создать 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

The DataTypeMode свойство fi объект, a, есть slope and bias scaling.

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

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

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

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. Вычислим реальное значение используя следующее уравнение.

realworldvalue=storedinteger×2-fractionlength

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. Вычислите сохраненное целое значение с помощью следующего уравнения.

realworldvalue=storedinteger×2-fractionlength

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

The 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

The 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 проектов с использованием HDL- Coder™.

Введенный в R2006a