Определите, имеет ли зарегистрированный тип данных масштабирование степени двойки
extern int ssGetDataTypeIsScalingPow2 (SimStruct *S, DTypeId dataTypeId)
S
SimStruct, представляющий Блок s-function.
dataTypeId
ID типа данных зарегистрированного типа данных, для которого вы хотите знать, является ли масштабирование строго степенью двойки.
Эта функция определяет, масштабируется ли зарегистрированный тип данных строго степенью двойки. Числа фиксированной точки могут быть представлены как
real-world value = (slope × integer) + bias,
где наклон может быть выражен как
slope = fractional slope × 2exponent.
Когда 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