fi

Создайте фиксированную точку числовой объект

Синтаксис

a = fi
a = fi(v)
a = fi(v,s)
a = fi(v,s,w)
a = fi(v,s,w,f)
a = fi(v,s,w,slope,bias)
a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias)
a = fi(v,T)
a = fi(v,F)
b = fi(a,F)
a = fi(v,T,F)
a = fi(v,s,F)
a = fi(v,s,w,F)
a = fi(v,s,w,f,F)
a = fi(v,s,w,slope,bias,F)
a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias,F)
a = fi(...'PropertyName',PropertyValue...)
a = fi('PropertyName',PropertyValue...)

Описание

Можно использовать функцию конструктора fi следующими способами:

  • a = fi конструктор по умолчанию и возвращает объект fi без значения, 16-битного размера слова и 15-битной дробной длины.

  • a = fi(v) возвращает объект фиксированной точки со знаком со значением v, 16-битный размер слова и длина части лучшей точности, когда v является двойным. Когда v не является двойным, конструктор fi сохраняет numerictype v, смотрите, Создают Объект fi Из Недвойного Значения.

  • a = fi(v,s) возвращает объект фиксированной точки со значением v, значение свойства Signed s, 16-битный размер слова и длина части лучшей точности. s может быть 0, (FALSE) для без знака или 1, (TRUE) для со знаком.

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

  • a = fi(v,s,w,f) возвращает объект фиксированной точки со значением v, значение свойства Signed s, размер слова w и дробная длина f. Дробная длина может быть больше, чем размер слова или отрицательной, видеть, Создают Объект fi С Дробной Длиной, Больше, Чем Размер слова, и Создают Объект fi С Отрицательной Дробной Длиной.

  • a = fi(v,s,w,slope,bias) возвращает объект фиксированной точки со значением v, значение свойства Signed s, размер слова w, slope и bias.

  • a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias) возвращает объект фиксированной точки со значением v, значение свойства Signed s, размер слова w, slopeadjustmentfactor, fixedexponent и bias.

  • a = fi(v,T) возвращает объект фиксированной точки со значением v и embedded.numerictype T. Обратитесь к Конструкции Объекта numerictype для получения дополнительной информации об объектах numerictype.

  • a = fi(v,F) возвращает объект фиксированной точки со значением v, embedded.fimath F, 16-битный размер слова и длина части лучшей точности. Обратитесь к Конструкции Объекта fimath для получения дополнительной информации об объектах fimath.

  • b = fi(a,F) позволяет вам поддерживать значение и объект numerictype объекта fi a, при изменении его объекта fimath на F.

  • a = fi(v,T,F) возвращает объект фиксированной точки со значением v, embedded.numerictype T и embedded.fimath F. Синтаксис a = fi(v,T,F) эквивалентен a = fi(v,F,T).

  • a = fi(v,s,F) возвращает объект фиксированной точки со значением v, значение свойства Signed s, 16-битный размер слова, длина части лучшей точности и embedded.fimath F.

  • a = fi(v,s,w,F) возвращает объект фиксированной точки со значением v, значение свойства Signed s, размер слова w, длина части лучшей точности и embedded.fimath F.

  • a = fi(v,s,w,f,F) возвращает объект фиксированной точки со значением v, значение свойства Signed s, размер слова w, дробная длина f и embedded.fimath F.

  • a = fi(v,s,w,slope,bias,F) возвращает объект фиксированной точки со значением v, значение свойства Signed s, размер слова w, slope, bias и embedded.fimath F.

  • a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias,F) возвращает объект фиксированной точки со значением v, значение свойства Signed s, размер слова w, slopeadjustmentfactor, fixedexponent, bias и embedded.fimath F.

  • a = fi(...'PropertyName',PropertyValue...) и a = fi('PropertyName',PropertyValue...) позвольте вам устанавливать объекты фиксированной точки для объекта fi именем свойства / пары значения свойства.

Объект fi имеет следующие три общих типа свойств:

Примечание

Эти свойства описаны подробно в fi Свойствах объектов в Ссылке Свойств.

Свойства данных

Свойства данных объекта fi всегда перезаписываемы.

  • bin — Сохраненное целочисленное значение объекта fi в двоичном файле

  • данные Числовое реальное значение объекта fi

  • dec — Сохраненное целочисленное значение объекта fi в десятичном числе

  • 'double' Реальное значение объекта fi, хранившего как MATLAB® double

  • hex — Сохраненное целочисленное значение объекта fi в шестнадцатеричном

  • int — Сохраненное целочисленное значение объекта fi, хранившего во встроенном целочисленном типе данных MATLAB

  • oct — Сохраненное целочисленное значение объекта fi в восьмеричном

  • Значение Полная точность реальное значение объекта fi, хранившего как вектор символов

Эти свойства описаны подробно в fi Свойствах объектов.

свойства fimath

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

  • Свойства fimathfimath сопоставлены с объектом fi

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

  • CastBeforeSum — Брошены ли оба операнда к типу данных суммы перед сложением

    Примечание

    Это свойство скрыто, когда SumMode установлен в FullPrecision.

  • MaxProductWordLength — Максимальный допустимый размер слова для типа данных продукта

  • MaxSumWordLength — Максимальный допустимый размер слова для типа данных суммы

  • Режим OverflowAction — Overflow

  • ProductBias — Смещение типа данных продукта

  • ProductFixedExponent — Фиксированная экспонента типа данных продукта

  • ProductFractionLength — Дробная длина, в битах, типа данных продукта

  • ProductMode — Задает, как тип данных продукта определяется

  • ProductSlope — Наклон типа данных продукта

  • ProductSlopeAdjustmentFactor — Наклонный поправочный коэффициент типа данных продукта

  • ProductWordLength — Размер слова, в битах, типа данных продукта

  • Режим RoundingMethod — Rounding

  • SumBias — Смещение типа данных суммы

  • SumFixedExponent — Фиксированная экспонента типа данных суммы

  • SumFractionLength — Дробная длина, в битах, типа данных суммы

  • SumMode — Задает, как тип данных суммы определяется

  • SumSlope — Наклон типа данных суммы

  • SumSlopeAdjustmentFactor — Наклонный поправочный коэффициент типа данных суммы

  • SumWordLength — Размер слова, в битах, типа данных суммы

Эти свойства описаны подробно в fimath Свойствах объектов.

Свойства numerictype

Когда вы создаете объект fi, объект numerictype также автоматически создается как свойство объекта fi.

numerictype — Объект, содержащий всю информацию о типе данных объекта fi, сигнала Simulink® или параметра модели

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

  • Bias — Смещение объекта fi

  • Тип данных Категория типов данных сопоставлена с объектом fi

  • DataTypeMode — Тип данных и масштабирующийся режим объекта fi

  • DataTypeOverride — Переопределение типа данных для применения типа данных fipref заменяет настройки к объектам fi. Это свойство обеспечивает удобный способ проигнорировать глобальную установку переопределения типа данных fipref. Обратите внимание на то, что это свойство не видимо, когда его значение является значением по умолчанию, Inherit. Когда это свойство установлено в Off, объект fi использует настройки типа данных numerictype и игнорирует настройки fipref.

  • FixedExponent — Экспонента фиксированной точки сопоставлена с объектом fi

  • SlopeAdjustmentFactor — Наклонная корректировка сопоставлена с объектом fi

  • FractionLength — Дробная длина сохраненного целочисленного значения объекта fi в битах

  • Масштабирование Режим масштабирования фиксированной точки объекта fi

  • Signed — Подписывается ли объект fi или без знака

  • Signedness — Подписывается ли объект fi или без знака

    Примечание

    Объекты numerictype могут иметь Signedness Auto, но всеми объектами fi должен быть Signed или Unsigned. Если объект numerictype с Auto Signedness используется, чтобы создать объект fi, свойство Signedness объекта fi автоматически значения по умолчанию к Signed.

  • Slope — Наклон сопоставлен с объектом fi

  • WordLength — Размер слова сохраненного целочисленного значения объекта fi в битах

Для получения дальнейшей информации на этих свойствах, см. numerictype Свойства объектов.

Примеры

Примечание

Для получения информации о формате отображения объектов fi относитесь, чтобы Просмотреть Данные Фиксированной точки.

Для примеров кастинга смотрите Бросок fi Объекты.

Создайте объект fi

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

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

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

Создайте массив объектов fi

a = fi((magic(3)/10), 1, 16, 12) 
a =
 
    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 с точностью по умолчанию

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

 a = fi(pi, 1, 8) 

a =
 
    3.1563

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

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

Если вы не используете w и f, размер слова установлен автоматически в 16 битов, и дробная длина собирается достигнуть лучшей возможной точности.

a = fi(pi, 1) 
a =
 
    3.1416

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

Создайте Объект fi Из Недвойного Значения

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

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

v = uint32(5);
a = fi(v)
a = 
     5

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

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

Когда вход является объектом 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

Когда вход v является логическим, затем вывод a имеет DataTypeMode: Boolean.

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

          DataTypeMode: Boolean

Когда вход является одним, вывод a имеет DataTypeMode: Single.

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

          DataTypeMode: Single

Создайте Объект fi С Дробной Длиной, Больше, Чем Размер слова

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

Рассмотрите значение со знаком с размером слова 8, дробной длиной 10 и сохраненным целочисленным значением 5. Мы можем вычислить реальное значение.

RealWorldValue = StoredInteger * 2 ^ -FractionLength
RealWorldValue = 5 * 2 ^ -10 = 0.0049   

Создайте объект fi со знаком со значением 0.0048828125, размером слова 8 битов и дробной длиной 10 битов.

a = fi(0.0048828125, true, 8, 10)
a = 
    0.0049

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

Получите сохраненное целочисленное значение a.

a.int
ans = int8
    5

Получите двоичное значение сохраненного целого числа.

a.bin
ans = 
'00000101'

Поскольку дробная длина на 2 бита более долга, чем размер слова, двоичным значением сохраненного целого числа является x.xx00000101, где x является заполнителем для неявных нулей. 0.0000000101 (двоичный файл) эквивалентен 0.0049 (десятичное число).

Создайте Объект fi С Отрицательной Дробной Длиной

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

Рассмотрите значение со знаком с размером слова 8, дробной длиной –2 и сохраненным целочисленным значением 5. Мы можем вычислить реальное значение.

RealWorldValue = StoredInteger * 2 ^ -FractionLength
RealWorldValue = 5 * 2 ^ 2 = 20   

Создайте объект fi со знаком со значением 20, размером слова 8 битов и дробной длиной-2 битов.

a = fi(20, true, 8, -2)
a = 
    20

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

Получите сохраненное целочисленное значение a.

a.int
ans = int8
    5

Получите двоичное значение сохраненного целого числа.

a.bin
ans = 
'00000101'

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

Создайте объект fi, задающий округление и переполнение

Можно использовать имя свойства / пары значения свойства, чтобы установить свойства 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

Удалите локальный fimath

Можно удалить локальный объект fimath из объекта fi в любое время с помощью функции removefimath.

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

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

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

a =
    3.1415

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

Объект fi a теперь не имеет никакого локального fimath. Чтобы повторно присвоить его локальный объект fimath, используйте функцию setfimath.

a = setfimath(a, fimath('ProductMode', 'KeepLSB'))
a =
    3.1415

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

        RoundingMethod: Nearest
        OverflowAction: Saturate
           ProductMode: KeepLSB
     ProductWordLength: 32
               SumMode: FullPrecision

Объект fi a теперь имеет локальный объект fimath с ProductMode KeepLSB. Значения остающихся свойств объектов fimath являются значением по умолчанию fimath значения.

Используйте fi в качестве Аргумента Индексации

Настройте массив, который будет индексирован.

x = 10:-1:1
x = 1×10

    10     9     8     7     6     5     4     3     2     1

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

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

Используйте fi в операторе switch

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

function y = test_switch(u, v)
   cExpr = fi(u + v, 0, 2, 0);
   t = 1;

   switch cExpr  % condition expression type: ufix2
      case 0    
         y = t * 2;
      case fi(1,0,2,0)
         y = t * 3;
      case 2
         y = t * 4;
      case 3
         y = t * 3;
      otherwise
         y = 0;
   end
end
y = test_switch(1,2.0)
y =
     3

Используйте fi в качестве Оператора двоеточия

Используйте объект fi в качестве оператора двоеточия.

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

a=fi(1,0,3,0);
b=fi(2,0,8,0);
c=fi(12,0,8,0);
x=a:b:c
x = 
     1     3     5     7     9    11

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

Создайте вектор фиксированной точки с интервалом нецелого числа

Чтобы создать вектор фиксированной точки с интервалом нецелого числа, сначала создайте вектор, затем бросьте вектор к фиксированной точке.

x = fi(0:0.1:10);

Также используйте функцию linspace.

x = fi(linspace(0,10, 101));

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

a = fi(0);
b = fi(0.1);
c = fi(10);
z = a:b:c

Используйте 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

Установите Переопределение Типа данных на Объекте fi

Установите свойство DataTypeOverride объекта fi так, чтобы объект fi не использовал настройки переопределения типа данных объекта fipref.

Сохраните текущие настройки fipref, чтобы восстановить позже.

fp = fipref;
initialDTOSetting = fp.DataTypeOverride;

Настройте fipref с набором переопределения типа данных к 'TrueDoubles' для всех числовых типов.

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

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

x = fi(pi, 1, 16, 13)
x = 
    3.1416

          DataTypeMode: Double

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

y = fi(pi, 1, 16, 13, 'DataTypeOverride','Off')
y = 
    3.1416

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

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

fp.DataTypeOverride = initialDTOSetting;

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

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