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

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

Со знаком из fi объект, заданный как булевская переменная. Значение 1, или true, указывает на тип данных со знаком. Значение 0, или false, указывает на тип данных без знака.

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

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

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

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

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

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

Типы данных: 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 возразите использует тип данных без знака, только два бита необходимы, чтобы представлять целочисленный фрагмент, оставляя шесть дробных битов.

a = fi(pi, 0, 8)
a = 
    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 объект от встроенного целого числа

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

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(pi)
a = 
    3.1416

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

Арифметические атрибуты 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 свойства, transivity, также свойства 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;

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

Введен в R2006a

Для просмотра документации необходимо авторизоваться на сайте