Main Content

pow2

固定小数点と 2K の効率的な乗算

構文

b = pow2(a,K)

説明

b = pow2(a,K)aK ビットだけシフトした値を返します。ここで K は整数、abfi オブジェクトです。出力 b の語長と小数部の長さは常に入力 a と同じものになります。

メモ

固定小数点演算では、K ビットだけシフトすることは、b = a*2K を計算することと等価か、またはそれ以上に効率的です。

K が非整数の場合、計算を実行する前に、関数 pow2 は K を floor に丸めます。

a のスケーリングは 2 進小数点のみのスケーリングと等価でなければなりません。つまり、勾配 2 のべき乗とバイアス 0 をもたなければなりません。

a は、実数または複素数です。a が複素数の場合、pow2a の実数部と虚数部の両方で演算します。

関数 pow2a に関連付けられた OverflowAction プロパティと RoundingMethod プロパティに従います。a に関連付けられた RoundingMethod プロパティに従う必要がない場合は、関数 bitshift を使用してみてください。

関数 pow2 はデータ型が Booleanfi オブジェクトはサポートしていません。

afi オブジェクトの場合、この関数は構文 b = pow2(a) もサポートしません。

例1 例 1

次の例では、a は実数値の fi オブジェクト、K は正の整数です。

関数 pow2a のビットを左に 3 つシフトし、a23 を効率よく乗算します。

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'
例2 例 2

次の例では、a は実数値の fi オブジェクト、K は負の整数です。

関数 pow2a のビットを右に 4 つシフトし、a2–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'
例3 例 3

次の例では 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)

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2006a より前に導入