Определите максимальную точность, доступную для представления значения с фиксированной точкой
out = fixptbestprec(RealWorldValue,TotalBits,IsSigned)
out = fixptbestprec(RealWorldValue,FixPtDataType)
out = fixptbestprec(RealWorldValue,TotalBits,IsSigned)
определяет максимальную точность для представления с фиксированной точкой реального значения, заданного RealWorldValue
. Вы задаете количество бит для номера фиксированной точки с TotalBits
, и вы задаете, подписан ли номер с фиксированной точкой IsSigned
. Если IsSigned
является 1
номер подписан. Если IsSigned
является 0
номер не подписан. Максимальная точность возвращается к out
.
out = fixptbestprec(RealWorldValue,FixPtDataType)
определяет максимальную точность на основе типа данных, заданного FixPtDataType
.
Следующая команда возвращает максимальную точность, доступную для реального значения 4/3 с помощью знакового 8-битного числа:
out = fixptbestprec(4/3,8,1)
out = 0.015625
Кроме того, можно задать тип данных с фиксированной точкой:
out = fixptbestprec(4/3,sfix(8))
out = 0.015625
Это значение означает, что максимальная точность, доступная для 4/3, получена путем размещения шести бит справа от двоичной точки с 2-6 равен 0,015625:
01.010101
Можно использовать максимальную точность в качестве масштабирования в блоках с фиксированной точкой. Это позволяет вам использовать fixptbestprec
чтобы выполнить тип автомасштабирование, если вы хотите обозначить известную область значений вашей симуляции. Для примера, если ваша известная область значений составляет от -13 до 22, и вы используете запас прочности 30%:
knownMax = 22; knownMin = -13; localSafetyMargin = 30; slope = max( fixptbestprec( (1+localSafetyMargin/100)* ... [knownMax,knownMin], sfix(16) ) );
Переменная slope
может затем использоваться в выражении, заданном для параметра Output data type в маске блока. Убедитесь, что в том же блоке установлен флажок Блокировать тип выходных данных от изменений с помощью инструментов с фиксированной точкой, чтобы предотвратить переопределение масштабирования Fixed-Point Tool. Если вы знаете область значений, можно использовать этот метод вместо того, чтобы полагаться на симуляцию модели, чтобы предоставить область значений для инструмента автомасштабирования, как описано в autofixexp
(Fixed-Point Designer).