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