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 конструктор.

Можно задать неличные значения -InfInf, и 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, указывает на тип данных без знака.

Типы данных: логический

Размер слова, в битах, fi объект в виде скалярного целого числа.

fi объект перебрасывается парой слов предел длины 65 535 битов.

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

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

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

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;

Использовать нечисловые значения -InfInf, и 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 объект задан, чтобы перенестись на переполнении, затем -InfInf, и 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