Эффективное умножение с фиксированной точкой на 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.
The pow2 функция подчиняется OverflowAction и RoundingMethod свойства, связанные с a. Если подчиняться RoundingMethod свойство, сопоставленное с a не важно, попробуйте использовать bitshift функция.
The pow2 функция не поддерживает fi объекты типа данных Boolean.
Функция также не поддерживает синтаксис b = pow2(a) когда a является fi объект.
В следующем примере a является реальным fi объект, и K является положительным целым числом.
The 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 - отрицательное целое число.
The 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)