Эффективное умножение фиксированной точки 2K
b = pow2(a,K)
b = pow2(a,K) возвращает значение a, переключенного битами K, где K является целым числом, и a и b являются объектами fi. Вывод b всегда имеет тот же размер слова и дробную длину как вход a.
В вычислениях с фиксированной точкой, переключающих битами K, эквивалентно и более эффективен, чем, вычисляя b = a *2k.
Если K будет нецелым числом, функция pow2 будет вокруг него к floor прежде, чем выполнить вычисление.
Масштабирование a должно быть эквивалентно бинарному масштабированию только для точки; другими словами, это должно иметь силу 2 наклонов и смещение 0.
a может быть действительным или комплексным. Если a является комплексным, pow2 управляет на обоих действительными и комплексными фрагментами a.
Функция pow2 повинуется свойствам OverflowAction и RoundingMethod, сопоставленным с a. Если повиновение свойству RoundingMethod, сопоставленному с a, не важно, попытайтесь использовать функцию bitshift.
Функция pow2 не поддерживает объекты fi типа данных Boolean.
Функция также не поддерживает синтаксис b = pow2(a), когда a является объектом fi.
В следующем примере a является объектом fi с действительным знаком, и K является положительным целым числом.
Функция pow2 переключает биты a 3 места налево, эффективно умножая a на 23.
a = fi(pi,1,16,8) b = pow2(a,3) binary_a = bin(a) binary_b = bin(b)
MATLAB® возвращается:
a =
3.1406
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
b =
25.1250
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
binary_a =
0000001100100100
binary_b =
0001100100100000В следующем примере a является объектом fi с действительным знаком, и K является отрицательным целым числом.
Функция pow2 переключает биты a 4 места направо, эффективно умножая a на 2–4.
a = fi(pi,1,16,8) b = pow2(a,-4) binary_a = bin(a) binary_b = bin(b)
MATLAB возвращается:
a =
3.1406
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
b =
0.1953
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
binary_a =
0000001100100100
binary_b =
0000000000110010Следующий пример показывает использование pow2 с комплексным объектом fi:
format long g P = fipref('NumericTypeDisplay', 'short'); a = fi(57 - 2i, 1, 16, 8) a = 57 - 2i s16,8 pow2(a, 2) ans = 127.99609375 - 8i s16,8