Определите, имеет ли зарегистрированный тип данных масштабирование степени двойки
extern int ssGetDataTypeIsScalingPow2 (SimStruct *S, DTypeId dataTypeId)
S
SimStruct, представляющий блок s-function.
dataTypeId
Идентификатор типа данных зарегистрированного типа данных, для которого необходимо знать, является ли масштабирование строгой степенью двойки.
Эта функция определяет, масштабируется ли зарегистрированный тип данных строго степенью двойки. Номера с фиксированной точкой могут быть представлены как
real-world value = (slope × <reservedrangesplaceholder1> ) + bias,
где наклон может быть выражен как
slope = <reservedrangesplaceholder0> × 2 exponent.
Когда bias = 0 и fractional slope = 1 , единственный масштабный коэффициент, который остается, является степенью двойки:
real-world value = (2exponent × integer) = (2-fraction length × integer).
Тривиальное масштабирование рассматривается как случай масштабирования степени двойки, при этом экспонента равна нулю.
Примечание
Многие алгоритмы с фиксированной точкой разработаны, чтобы принять только масштабирование степени двойки. Для этих алгоритмов можно вызвать ssGetDataTypeIsScalingPow2
в mdlSetInputPortDataType
и mdlSetOutputPortDataType
, чтобы предотвратить принятие неподдерживаемых типов данных.
Эта функция ошибается, когда ssGetDataTypeIsFxpFltApiCompat
возвращает FALSE
.
Чтобы использовать эту функцию, вы должны включить fixedpoint.h
и fixedpoint.c
. Для получения дополнительной информации смотрите Структура S-функции.
C
FixPt_DataTypeIsScalingPow2