Эффективное умножение фиксированной точки 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)