Создайте фиксированную точку числовой объект
a = fi
a = fi(v)
a = fi(v,s)
a = fi(v,s,w)
a = fi(v,s,w,f)
a = fi(v,s,w,slope,bias)
a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias)
a = fi(v,T)
a = fi(v,F)
b = fi(a,F)
a = fi(v,T,F)
a = fi(v,s,F)
a = fi(v,s,w,F)
a = fi(v,s,w,f,F)
a = fi(v,s,w,slope,bias,F)
a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias,F)
a = fi(...'PropertyName',PropertyValue...)
a
= fi('PropertyName',PropertyValue...)
Можно использовать функцию конструктора fi
следующими способами:
a = fi
конструктор по умолчанию и возвращает объект fi
без значения, 16-битного размера слова и 15-битной дробной длины.
a = fi(v)
возвращает объект фиксированной точки со знаком со значением v
, 16-битный размер слова и длина части лучшей точности, когда v
является двойным. Когда v
не является двойным, конструктор fi
сохраняет numerictype
v
, смотрите, Создают Объект fi Из Недвойного Значения.
a = fi(v,s)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, 16-битный размер слова и длина части лучшей точности. s
может быть 0
, (FALSE) для без знака или 1
, (TRUE) для со знаком.
a = fi(v,s,w)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, размер слова w
и длина части лучшей точности.
a = fi(v,s,w,f)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, размер слова w
и дробная длина f
. Дробная длина может быть больше, чем размер слова или отрицательной, видеть, Создают Объект fi С Дробной Длиной, Больше, Чем Размер слова, и Создают Объект fi С Отрицательной Дробной Длиной.
a = fi(v,s,w,slope,bias)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, размер слова w
, slope
и bias
.
a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, размер слова w
, slopeadjustmentfactor
, fixedexponent
и bias
.
a = fi(v,T)
возвращает объект фиксированной точки со значением v
и embedded.numerictype
T
. Обратитесь к Конструкции Объекта numerictype для получения дополнительной информации об объектах numerictype
.
a = fi(v,F)
возвращает объект фиксированной точки со значением v
, embedded.fimath
F
, 16-битный размер слова и длина части лучшей точности. Обратитесь к Конструкции Объекта fimath для получения дополнительной информации об объектах fimath
.
b = fi(a,F)
позволяет вам поддерживать значение и объект numerictype
объекта fi
a
, при изменении его объекта fimath
на F
.
a = fi(v,T,F)
возвращает объект фиксированной точки со значением v
, embedded.numerictype
T
и embedded.fimath
F
. Синтаксис a = fi(v,T,F)
эквивалентен a = fi(v,F,T)
.
a = fi(v,s,F)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, 16-битный размер слова, длина части лучшей точности и embedded.fimath
F
.
a = fi(v,s,w,F)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, размер слова w
, длина части лучшей точности и embedded.fimath
F
.
a = fi(v,s,w,f,F)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, размер слова w
, дробная длина f
и embedded.fimath
F
.
a = fi(v,s,w,slope,bias,F)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, размер слова w
, slope
, bias
и embedded.fimath
F
.
a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias,F)
возвращает объект фиксированной точки со значением v
, значение свойства Signed
s
, размер слова w
, slopeadjustmentfactor
, fixedexponent
, bias
и embedded.fimath
F
.
a = fi(...'PropertyName',PropertyValue...)
и a
= fi('PropertyName',PropertyValue...)
позвольте вам устанавливать объекты фиксированной точки для объекта fi
именем свойства / пары значения свойства.
Объект fi
имеет следующие три общих типа свойств:
Эти свойства описаны подробно в fi Свойствах объектов в Ссылке Свойств.
Свойства данных объекта fi
всегда перезаписываемы.
bin
— Сохраненное целочисленное значение объекта fi
в двоичном файле
данные
Числовое реальное значение объекта fi
dec
— Сохраненное целочисленное значение объекта fi
в десятичном числе
'double'
Реальное значение объекта fi
, хранившего как MATLAB® double
hex
— Сохраненное целочисленное значение объекта fi
в шестнадцатеричном
int
— Сохраненное целочисленное значение объекта fi
, хранившего во встроенном целочисленном типе данных MATLAB
oct
— Сохраненное целочисленное значение объекта fi
в восьмеричном
Значение
Полная точность реальное значение объекта fi
, хранившего как вектор символов
Эти свойства описаны подробно в fi Свойствах объектов.
Когда вы создаете объект fi
и задаете свойства объектов fimath
в конструкторе fi
, объект fimath
создается как свойство объекта fi
. Если вы не задаете свойств fimath
в конструкторе fi
, получившийся fi
не имеет никакого присоединенного объекта fimath
.
Свойства fimath
— fimath
сопоставлены с объектом fi
Следующие свойства fimath
, транзитивностью, также свойства объекта fi
. Свойства описанного ниже объекта fimath
всегда перезаписываемы.
CastBeforeSum
— Брошены ли оба операнда к типу данных суммы перед сложением
Это свойство скрыто, когда SumMode
установлен в FullPrecision
.
MaxProductWordLength
— Максимальный допустимый размер слова для типа данных продукта
MaxSumWordLength
— Максимальный допустимый размер слова для типа данных суммы
Режим OverflowAction
— Overflow
ProductBias
— Смещение типа данных продукта
ProductFixedExponent
— Фиксированная экспонента типа данных продукта
ProductFractionLength
— Дробная длина, в битах, типа данных продукта
ProductMode
— Задает, как тип данных продукта определяется
ProductSlope
— Наклон типа данных продукта
ProductSlopeAdjustmentFactor
— Наклонный поправочный коэффициент типа данных продукта
ProductWordLength
— Размер слова, в битах, типа данных продукта
Режим RoundingMethod
— Rounding
SumBias
— Смещение типа данных суммы
SumFixedExponent
— Фиксированная экспонента типа данных суммы
SumFractionLength
— Дробная длина, в битах, типа данных суммы
SumMode
— Задает, как тип данных суммы определяется
SumSlope
— Наклон типа данных суммы
SumSlopeAdjustmentFactor
— Наклонный поправочный коэффициент типа данных суммы
SumWordLength
— Размер слова, в битах, типа данных суммы
Эти свойства описаны подробно в fimath Свойствах объектов.
Когда вы создаете объект fi
, объект numerictype
также автоматически создается как свойство объекта fi
.
numerictype
— Объект, содержащий всю информацию о типе данных объекта fi
, сигнала Simulink® или параметра модели
Следующие свойства numerictype
, транзитивностью, также свойства объекта fi
. Свойства объекта numerictype
становятся только для чтения после того, как вы создадите объект fi
. Однако можно создать копию объекта fi
с новыми значениями, заданными для свойств numerictype
.
Bias
— Смещение объекта fi
Тип данных
Категория типов данных сопоставлена с объектом fi
DataTypeMode
— Тип данных и масштабирующийся режим объекта fi
DataTypeOverride
— Переопределение типа данных для применения типа данных fipref
заменяет настройки к объектам fi
. Это свойство обеспечивает удобный способ проигнорировать глобальную установку переопределения типа данных fipref
. Обратите внимание на то, что это свойство не видимо, когда его значение является значением по умолчанию, Inherit
. Когда это свойство установлено в Off
, объект fi
использует настройки типа данных numerictype
и игнорирует настройки fipref
.
FixedExponent
— Экспонента фиксированной точки сопоставлена с объектом fi
SlopeAdjustmentFactor
— Наклонная корректировка сопоставлена с объектом fi
FractionLength
— Дробная длина сохраненного целочисленного значения объекта fi
в битах
Масштабирование
Режим масштабирования фиксированной точки объекта fi
Signed
— Подписывается ли объект fi
или без знака
Signedness
— Подписывается ли объект fi
или без знака
Объекты numerictype
могут иметь Signedness
Auto
, но всеми объектами fi
должен быть Signed
или Unsigned
. Если объект numerictype
с Auto
Signedness
используется, чтобы создать объект fi
, свойство Signedness
объекта fi
автоматически значения по умолчанию к Signed
.
Slope
— Наклон сопоставлен с объектом fi
WordLength
— Размер слова сохраненного целочисленного значения объекта fi
в битах
Для получения дальнейшей информации на этих свойствах, см. numerictype Свойства объектов.
Для получения информации о формате отображения объектов fi
относитесь, чтобы Просмотреть Данные Фиксированной точки.
Для примеров кастинга смотрите Бросок fi Объекты.
fi
Создайте объект fi
со знаком со значением pi
, размером слова 8 битов и дробной длиной 3 битов.
a = fi(pi, 1, 8, 3)
a = 3.1250 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 3
fi
a = fi((magic(3)/10), 1, 16, 12)
a = 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
с точностью по умолчаниюЕсли вы не используете аргумент f
, дробная длина собирается автоматически достигнуть лучшей возможной точности.
a = fi(pi, 1, 8) a = 3.1563 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 5
fi
с размером слова по умолчанию и точностьюЕсли вы не используете w
и f
, размер слова установлен автоматически в 16 битов, и дробная длина собирается достигнуть лучшей возможной точности.
a = fi(pi, 1)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
Когда вы создаете объект fi
с помощью конструктора по умолчанию и недвойного входного значения, v
, конструктор сохраняет numerictype
v
.
Когда вход является встроенным целым числом, атрибуты фиксированной точки совпадают с атрибутами целочисленного типа.
v = uint32(5); a = fi(v)
a = 5 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 32 FractionLength: 0
Вывод a
является объектом fi
, который использует размер слова, дробную длину, и со знаком из входа v
.
Когда вход является объектом 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
Когда вход v
является логическим, затем вывод a
имеет DataTypeMode: Boolean
.
v = true; a = fi(v)
a = 1 DataTypeMode: Boolean
Когда вход является одним, вывод a
имеет DataTypeMode: Single
.
v = single(pi); a = fi(v)
a = 3.1416 DataTypeMode: Single
Когда вы используете представление двоичной точки для номера фиксированной точки, дробная длина может быть больше, чем размер слова. В этом случае существуют неявные начальные нули (для положительных чисел) или единицы (для отрицательных чисел) между двоичной точкой и первой значительной двоичной цифрой.
Рассмотрите значение со знаком с размером слова 8, дробной длиной 10 и сохраненным целочисленным значением 5. Мы можем вычислить реальное значение.
RealWorldValue = StoredInteger * 2 ^ -FractionLength RealWorldValue = 5 * 2 ^ -10 = 0.0049
Создайте объект fi
со знаком со значением 0.0048828125
, размером слова 8 битов и дробной длиной 10 битов.
a = fi(0.0048828125, true, 8, 10)
a = 0.0049 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 10
Получите сохраненное целочисленное значение a
.
a.int
ans = int8
5
Получите двоичное значение сохраненного целого числа.
a.bin
ans = '00000101'
Поскольку дробная длина на 2 бита более долга, чем размер слова, двоичным значением сохраненного целого числа является x.xx00000101
, где x
является заполнителем для неявных нулей. 0.0000000101
(двоичный файл) эквивалентен 0.0049
(десятичное число).
Когда вы используете представление двоичной точки для номера фиксированной точки, дробная длина может быть отрицательной. В этом случае существуют неявные конечные нули (для положительных чисел) или единицы (для отрицательных чисел) между двоичной точкой и первой значительной двоичной цифрой.
Рассмотрите значение со знаком с размером слова 8, дробной длиной –2 и сохраненным целочисленным значением 5. Мы можем вычислить реальное значение.
RealWorldValue = StoredInteger * 2 ^ -FractionLength RealWorldValue = 5 * 2 ^ 2 = 20
Создайте объект fi
со знаком со значением 20
, размером слова 8 битов и дробной длиной-2 битов.
a = fi(20, true, 8, -2)
a = 20 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: -2
Получите сохраненное целочисленное значение a
.
a.int
ans = int8
5
Получите двоичное значение сохраненного целого числа.
a.bin
ans = '00000101'
Поскольку дробная длина отрицательна, двоичным значением сохраненного целого числа является 00000101xx
, где x
является заполнителем для неявных нулей. 000000010100
(двоичный файл) эквивалентен 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
fimath
Можно удалить локальный объект fimath
из объекта fi
в любое время с помощью функции removefimath
.
a = fi(pi, 'RoundingMethod', 'Floor', 'OverflowAction', 'Wrap') a = removefimath(a)
a = 3.1415 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13 RoundingMethod: Floor OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision a = 3.1415 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
Объект fi
a
теперь не имеет никакого локального fimath
. Чтобы повторно присвоить его локальный объект fimath
, используйте функцию setfimath
.
a = setfimath(a, fimath('ProductMode', 'KeepLSB'))
a = 3.1415 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13 RoundingMethod: Nearest OverflowAction: Saturate ProductMode: KeepLSB ProductWordLength: 32 SumMode: FullPrecision
Объект fi
a
теперь имеет локальный объект fimath
с ProductMode
KeepLSB
. Значения остающихся свойств объектов fimath
являются значением по умолчанию fimath значения.
Настройте массив, который будет индексирован.
x = 10:-1:1
x = 1×10
10 9 8 7 6 5 4 3 2 1
Создайте объект fi
и используйте его, чтобы индексировать в x
.
k = fi(3); y = x(k)
y = 8
fi
в операторе switchМожно использовать объект fi
в качестве условия переключателя и в качестве одного или нескольких случаев в выражении переключателя.
function y = test_switch(u, v) cExpr = fi(u + v, 0, 2, 0); t = 1; switch cExpr % condition expression type: ufix2 case 0 y = t * 2; case fi(1,0,2,0) y = t * 3; case 2 y = t * 4; case 3 y = t * 3; otherwise y = 0; end end
y = test_switch(1,2.0)
y = 3
Используйте объект fi
в качестве оператора двоеточия.
Когда вы используете fi
в качестве оператора двоеточия, все операнды двоеточия должны иметь целочисленные значения.
a=fi(1,0,3,0); b=fi(2,0,8,0); c=fi(12,0,8,0); x=a:b:c
x = 1 3 5 7 9 11 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0
Чтобы создать вектор фиксированной точки с интервалом нецелого числа, сначала создайте вектор, затем бросьте вектор к фиксированной точке.
x = fi(0:0.1:10);
Также используйте функцию linspace
.
x = fi(linspace(0,10, 101));
Следующий код, где один из операндов двоеточия не является целым числом, генерирует ошибку.
a = fi(0); b = fi(0.1); c = fi(10); z = a:b:c
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
Установите свойство DataTypeOverride
объекта fi
так, чтобы объект fi
не использовал настройки переопределения типа данных объекта fipref
.
Сохраните текущие настройки fipref
, чтобы восстановить позже.
fp = fipref; initialDTOSetting = fp.DataTypeOverride;
Настройте fipref
с набором переопределения типа данных к 'TrueDoubles'
для всех числовых типов.
fipref('DataTypeOverride', 'TrueDoubles')
ans = NumberDisplay: 'RealWorldValue' NumericTypeDisplay: 'full' FimathDisplay: 'full' LoggingMode: 'Off' DataTypeOverride: 'TrueDoubles' DataTypeOverrideAppliesTo: 'AllNumericTypes'
Создайте новый объект fi
, не задавая его свойство DataTypeOverride
так, чтобы он использовал настройки переопределения типа данных, заданные с помощью fipref
.
x = fi(pi, 1, 16, 13)
x = 3.1416 DataTypeMode: Double
Теперь создайте объект fi
и установите его свойство DataTypeOverride
на 'Off'
так, чтобы он проигнорировал настройки переопределения типа данных, заданные с помощью fipref
.
y = fi(pi, 1, 16, 13, 'DataTypeOverride','Off')
y = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
Восстановите настройки fipref
, сохраненные в начале примера.
fp.DataTypeOverride = initialDTOSetting;
fimath
| fipref
| isfimathlocal
| numerictype
| quantizer
| sfi
| ufi