Создайте численный объект с фиксированной точкой
Чтобы назначить тип данных с фиксированной точкой числу или переменной, создайте 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.