Создайте численный объект с фиксированной точкой
Чтобы назначить тип данных с фиксированной точкой числу или переменной, создайте fi
объект с использованием fi
конструктор. Можно задать числовые атрибуты и математические правила в конструкторе или с помощью numerictype
и fimath
объекты.
возвращает a
= fifi
объект без значения, 16-битный размер слова и 15-битная длина дроби.
возвращает объект с фиксированной точкой со значением a
= fi(v
)v
и значения свойств по умолчанию.
создает объект с фиксированной точкой с использованием масштабирования откоса и смещения.a
= fi(v
,s
, w
,slopeadjustmentfactor
,fixedexponent
,bias
)
создает объект с фиксированной точкой с математическими настройками, заданными a
= fi(___,F
)fimath
F объекта
.
создает объект с фиксированной точкой со значениями свойств, заданными одним или несколькими a
= fi(___,Name,Value
)Name,Value
аргументы в виде пар. Name
должны находиться внутри одинарных кавычек (''
). Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN
.
v
- ЗначениеЗначение 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
s
- СигнальностьСигнальность fi
объект, заданный как логический. Значение 1
, или true
, указывает тип данных со знаком. Значение 0
, или false
, указывает неподписанный тип данных.
Типы данных: logical
w
- Размер словаРазмер слова, в битах, fi
объект, заданный как скалярное целое число.
fi
объект имеет размер слова предела 65535 бит.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
f
- Длина дробиДлина дроби, в битах, fi
объект, заданный как скалярное целое число. Если вы не задаете длину дроби, fi
объект автоматически использует длину дроби, которая дает лучшую точность, избегая при этом переполнения для заданного значения, размера слова и сигнальности.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
slope
- УклонНаклон масштабирования, заданный как скаляр целое число. Следующее уравнение представляет действительное значение масштабированного числа смещения наклона.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
bias
- СмещениеСмещение масштабирования, заданное как скаляр. Следующее уравнение представляет действительное значение масштабированного числа смещения наклона.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
slopeadjustmentfactor
- Коэффициент корректировки уклонаКоэффициент корректировки наклона масштабируемого числа смещения наклона. Следующее уравнение демонстрирует зависимость между наклоном, фиксированной экспонентой и коэффициентом корректировки наклона.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
fixedexponent
- Фиксированная экспонентаФиксированная экспонента масштабируемого числа смещения наклона. Следующее уравнение демонстрирует зависимость между наклоном, фиксированной экспонентой и коэффициентом корректировки наклона.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
T
- Свойства числового типаnumerictype
объектЧисловые свойства fi
объект, заданный как numerictype
объект. Для получения дополнительной информации см. numerictype
.
F
- Математические свойства с фиксированной точкойfimath
объектМатематические свойства fi
с фиксированной точкой объект, заданный как
fimath
объект. Для получения дополнительной информации см. fimath
.
fi
объектСоздание подписанного 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
ОбъектыСоздайте массив 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
объект с размером слова по умолчанию и длиной дробиКогда вы задаете только значение и сигнальность fi
объект, размер слова по умолчанию составляет 16 биты, и длина дроби устанавливается для достижения наилучшей возможной точности без переполнения.
a = fi(pi, 1)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
fi
Объект с точностью по умолчаниюЕсли вы не задаете длину дроби, входной параметр 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
Объект с масштабированием уклона и смещенияДействительное значение масштабированного числа смещения наклона представлено:
Как создать 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
.
fi
Объект из недвойственного значенияКогда входной параметр значения, 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
объект, который присоединен к этому 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
fi
Объект из numerictype
Объект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
fi
Объект с длиной дроби, большей, чем размер словаКогда вы используете представление с двоичной точкой для числа с фиксированной точкой, длина дроби может быть больше, чем размер слова. В этом случае существуют неявные начальные нули (для положительных чисел) или таковые (для отрицательных чисел) между двоичной точкой и первой значащей двоичной цифрой.
Рассмотрим значение со знаком с размером слова 8, длиной дроби 10 и сохраненным целым значением 5. Вычислим реальное значение используя следующее уравнение.
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 (десятичное число).
fi
Объект с отрицательной длиной дробиКогда вы используете представление с двоичной точкой для числа с фиксированной точкой, длина дроби может быть отрицательной. В этом случае существуют неявные конечные нули (для положительных чисел) или таковые (для отрицательных чисел) между двоичной точкой и первой значащей двоичной цифрой.
Рассмотрим тип данных со знаком с размером слова 8, длиной дроби -2 и сохраненным целым значением 5. Вычислите сохраненное целое значение с помощью следующего уравнения.
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
Объект, задающий режимы округления и переполненияМожно задать математические свойства, такие как режимы округления и переполнения во время создания 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
объект как индекс, значение 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
fi
Объект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;
fi
Поведение для -Inf
, Inf
, и NaN
Чтобы использовать нечисловые значения -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
fi
для -Inf
, Inf
, и NaN
Поведение изменено в R2020b
В предыдущих релизах fi
возвращает ошибку, когда передаются не конечные входные значения -Inf
, Inf
, или NaN
. fi
теперь обрабатывает эти входы так же, как MATLAB® и Simulink® указатель -Inf
, Inf
, и NaN
для целочисленных типов данных.
Когда fi
задается как числовой тип с фиксированной точкой,
NaN
сопоставляется с 0
.
Когда 'OverflowAction'
свойство fi
для объекта задано значение 'Wrap'
, -Inf
, и Inf
сопоставить с 0
.
Когда 'OverflowAction'
свойство fi
для объекта задано значение 'Saturate'
, Inf
преобразуется в самое большое представимое значение, и -Inf
преобразуется в наименьшее представимое значение.
Для примера такого поведения смотрите fi Behavior для -Inf, Inf и NaN.
Примечание
Масштабирование наилучшей точности не поддерживается для входных значений -Inf
, Inf
, или NaN
.
Указания и ограничения по применению:
Синтаксис конструктора по умолчанию без каких-либо входных параметров не поддерживается.
Если на numerictype
не полностью задан, вход в fi
должен быть константой, fi
, одно или встроенное целое значение. Если вход является встроенным двойным значением, это должно быть константой. Это ограничение позволяет fi
для автоматического масштабирования длины ее дроби на основе известного типа данных входа.
Все свойства, связанные с типом данных, должны быть постоянными для генерации кода.
numerictype
информация об объекте должна быть доступна для входов Simulink с нефиксированной точкой.
fimath
| fipref
| isfimathlocal
| numerictype
| quantizer
| sfi
| ufi
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.