Построение числового объекта с фиксированной точкой
Чтобы назначить тип данных с фиксированной точкой номеру или переменной, создайте 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
DataTypeMode имущества fi объект, aявляется slope and bias scaling.
fi Объект из значения, отличного от двойногоКогда аргумент ввода значения, v, из fi объект не является двойным, и свойства длины слова или дроби не задаются, результат fi объект сохраняет числовой тип ввода, v.
Создать fi объект из встроенного целого числа
Если вход является встроенным целым числом, атрибуты с фиксированной точкой соответствуют атрибутам типа integer.
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. Вычислите реальное значение, используя следующее уравнение.
длина 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 (десятичное число).
fi Объект с отрицательной длиной дробиПри использовании представления двоичной точки для числа с фиксированной точкой длина дроби может быть отрицательной. В этом случае между двоичной точкой и первой значащей двоичной цифрой имеются неявные нули (для положительных чисел) или единицы (для отрицательных чисел).
Рассмотрим тип данных со знаком с длиной слова 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 Объект, задающий режимы округления и переполненияМожно задать математические свойства, такие как округление и режимы переполнения во время создания 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 объект как индекс, значение 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 Объект 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 для -Inf, Inf и NaN.
Примечание
Масштабирование с наилучшей точностью не поддерживается для входных значений -Inf, Inf, или NaN.
Примечания и ограничения по использованию:
Синтаксис конструктора по умолчанию без входных аргументов не поддерживается.
Если numerictype не полностью указан, вход в fi должен быть константой, а fi, одиночное или встроенное целое значение. Если вход является встроенным двойным значением, он должен быть константой. Это ограничение позволяет fi для автоматического масштабирования его длины дроби на основе известного типа данных входного сигнала.
Все свойства, связанные с типом данных, должны быть постоянными для создания кода.
numerictype информация об объекте должна быть доступна для нефиксированных точек ввода Simulink.
fimath | fipref | isfimathlocal | numerictype | quantizer | sfi | ufi
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.