Создайте фиксированную точку числовой объект
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
fia = 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