pow2
固定小数点と 2K の効率的な乗算
構文
b = pow2(a,K)
説明
b = pow2(a,K)
は a
を K
ビットだけシフトした値を返します。ここで K
は整数、a
と b
は fi
オブジェクトです。出力 b
の語長と小数部の長さは常に入力 a
と同じものになります。
メモ
固定小数点演算では、K
ビットだけシフトすることは、b = a*2K を計算することと等価か、またはそれ以上に効率的です。
K
が非整数の場合、計算を実行する前に、関数 pow2
は K を floor
に丸めます。
a
のスケーリングは 2 進小数点のみのスケーリングと等価でなければなりません。つまり、勾配 2 のべき乗とバイアス 0 をもたなければなりません。
a
は、実数または複素数です。a
が複素数の場合、pow2
は a
の実数部と虚数部の両方で演算します。
関数 pow2
は a
に関連付けられた OverflowAction
プロパティと RoundingMethod
プロパティに従います。a
に関連付けられた RoundingMethod
プロパティに従う必要がない場合は、関数 bitshift
を使用してみてください。
関数 pow2
はデータ型が Boolean
の fi
オブジェクトはサポートしていません。
a
が fi
オブジェクトの場合、この関数は構文 b = pow2(a)
もサポートしません。
例
次の例では、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)
拡張機能
バージョン履歴
R2006a より前に導入