Создайте фиксированную точку числовой объект
Чтобы присвоить тип данных с фиксированной точкой номеру или переменной, создайте 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 конструктор.
Можно задать неличные значения -InfInf, и 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, указывает на тип данных без знака.
Типы данных: логический
w — Размер словаРазмер слова, в битах, fi объект в виде скалярного целого числа.
Типы данных: 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 объект от встроенного целого числа
Когда вход является встроенным целым числом, атрибуты фиксированной точки совпадают с атрибутами целочисленного типа.
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 Объект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
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 Поведение для -InfInf, и NaNИспользовать нечисловые значения -InfInf, и 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 объект задан, чтобы перенестись на переполнении, затем -InfInf, и 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 для -InfInf, и NaNПоведение изменяется в R2020b
В предыдущих релизах, fi возвратил бы ошибку, когда передано неличные входные значения -InfInf, или NaN. fi теперь обрабатывают эти входные параметры таким же образом, что MATLAB® и Simulink® обрабатывают -InfInf, и NaN для целочисленных типов данных.
Когда fi задан как фиксированная точка числовой тип,
NaN карты к 0.
Когда 'OverflowAction' свойство fi объект установлен в 'Wrap'Inf, и Inf сопоставьте с 0.
Когда 'OverflowAction' свойство fi объект установлен в 'Saturate'Inf карты к самому большому представимому значению и -Inf карты к наименьшему представимому значению.
Для примера этого поведения см. fi Поведение для-Inf, Inf и NaN.
Примечание
Масштабирование лучшей точности не поддерживается для входных значений -InfInf, или NaN.
Указания и ограничения по применению:
Синтаксис конструктора по умолчанию без любых входных параметров не поддерживается.
Если numerictype не полностью задан, вход к fi должна быть константа, fi, сингл, или встроенное целочисленное значение. Если вход является встроенным двойным значением, это должна быть константа. Это ограничение позволяет fi автомасштабировать его дробную длину на основе известного типа данных входа.
Все свойства, связанные с типом данных, должны быть постоянными для генерации кода.
numerictype информация об объекте должна быть доступна для нефиксированной точки входные параметры Simulink.
fimath | fipref | isfimathlocal | numerictype | quantizer | sfi | ufi
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.