Эффективное умножение с фиксированной точкой на 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)
a =
3.140625
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
b =
25.125
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)
a =
3.140625
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 8
b =
0.1953125
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
numerictype(1,16,8)pow2(a,2)
ans =
127.99609375 - 8i
numerictype(1,16,8)