Main Content

quantize

固定小数点数の量子化

quantize は推奨されません。代わりに castzerosoneseye、または subsasgn を使用してください。詳細については、互換性についての考慮事項を参照してください。

説明

numerictype オブジェクトを使用した量子化

y = quantize(x) は、既定の設定を使用して入力 x の値を量子化します。

numerictype、丸め手法およびオーバーフロー アクションは、量子化中にのみ適用されます。出力 yfimath は付加されません。

y = quantize(x,nt) は、指定された numerictype ntx を量子化します。

y = quantize(x,nt,rm) は、指定された丸め手法 rm を使用して、指定された numerictype ntx を量子化します。

y = quantize(x,nt,rm,oa) は、指定された丸め手法 rm とオーバーフロー アクション oa を使用して、指定された numerictype ntx を量子化します。

数値型プロパティを指定した量子化

yBP = quantize(x,s) は、符号属性 s の 2 進小数点でスケーリングされた固定小数点数に x を量子化します。

yBP = quantize(x,s,wl) は、符号属性 s および語長 wl の 2 進小数点でスケーリングされた固定小数点数に x を量子化します。

yBP = quantize(x,s,wl,fl) は、符号属性 s、語長 wl、および小数部の長さ fl の 2 進小数点でスケーリングされた固定小数点数に x を量子化します。

yBP = quantize(x,s,wl,fl,rm) は、丸め手法 rm を使用して、符号属性 s、語長 wl、および小数部の長さ fl の 2 進小数点でスケーリングされた固定小数点数に x を量子化します。

yBP = quantize(x,s,wl,fl,rm,oa) は、丸め手法 rm とオーバーフロー アクション oa を使用して、符号属性 s、語長 wl、および小数部の長さ fl の 2 進小数点でスケーリングされた固定小数点数に x を量子化します。

すべて折りたたむ

量子化する入力 fi の値を定義します。

x_BP = fi(pi)
x_BP = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

numerictype オブジェクトを使用

語長が 8 ビットで小数部の長さが 4 ビットの符号付き固定小数点データ型を指定する numerictype オブジェクトを作成します。

ntBP = numerictype(1,8,4);

定義した numerictype オブジェクト ntBP を使用して、入力 x_BP を 2 進小数点でスケーリングされた固定小数点データ型に量子化します。

yBP1 = quantize(x_BP,ntBP)
yBP1 = 
    3.1250

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

入力で数値型プロパティを指定

yBP2 = quantize(x_BP,1,8,4)
yBP2 = 
    3.1250

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

勾配とバイアスでスケーリングされた固定小数点データ型を指定する numerictype オブジェクトを作成します。

ntSB = numerictype('Scaling','SlopeBias',...
      'SlopeAdjustmentFactor',1.8,...
      'Bias',1,...
      'FixedExponent',-12);

量子化する入力 fi の値を定義します。

x_BP = fi(pi)
x_BP = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

定義した numerictype ntSB を使用して、入力 x_BP を勾配とバイアスでスケーリングされた固定小数点データ型に量子化します。

ySB1 = quantize(x_BP, ntSB)
ySB1 = 
    3.1415

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 0.000439453125
                  Bias: 1

量子化する入力 fi の値を定義します。

x_SB = fi(rand(5,3),numerictype('Scaling','SlopeBias','Bias',-0.125))
x_SB = 
    0.8147    0.0975    0.1576
    0.8750    0.2785    0.8750
    0.1270    0.5469    0.8750
    0.8750    0.8750    0.4854
    0.6324    0.8750    0.8003

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 3.0517578125e-5
                  Bias: -0.125

numerictype オブジェクトを使用

語長が 8 ビットで小数部の長さが 4 ビットの 2 進小数点でスケーリングされた符号付き固定小数点データ型を指定する numerictype オブジェクト ntBP を作成します。

ntBP = numerictype(1,8,4);

定義した numerictype ntBP を使用して、入力 x_SB を 2 進小数点でスケーリングされた固定小数点データ型に量子化します。さらに、最も近い値に丸め、オーバーフローで飽和させます。

yBP1 = quantize(x_SB,ntBP,'Nearest','Saturate')
yBP1 = 
    0.8125    0.1250    0.1875
    0.8750    0.2500    0.8750
    0.1250    0.5625    0.8750
    0.8750    0.8750    0.5000
    0.6250    0.8750    0.8125

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

入力で数値型プロパティを指定

yBP2 = quantize(x_SB,1,8,4,'Nearest','Saturate')
yBP2 = 
    0.8125    0.1250    0.1875
    0.8750    0.2500    0.8750
    0.1250    0.5625    0.8750
    0.8750    0.8750    0.5000
    0.6250    0.8750    0.8125

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

量子化する入力 fi の値を定義します。

x_SB = fi(rand(5,3),numerictype('Scaling','SlopeBias','Bias',-0.125))
x_SB = 
    0.8147    0.0975    0.1576
    0.8750    0.2785    0.8750
    0.1270    0.5469    0.8750
    0.8750    0.8750    0.4854
    0.6324    0.8750    0.8003

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 3.0517578125e-5
                  Bias: -0.125

勾配とバイアスでスケーリングされた固定小数点データ型を指定する numerictype オブジェクトを作成します。

ntSB = numerictype('Scaling','SlopeBias', ...
      'SlopeAdjustmentFactor',1.8,'Bias',...
      1,'FixedExponent',-12);

定義した numerictype ntSB を使用して、入力 x_SB を勾配とバイアスでスケーリングされた固定小数点データ型に量子化します。さらに、正方向に丸めます。

ySB2 = quantize(x_SB,ntSB,'Ceiling')
ySB2 = 
    0.8150    0.0978    0.1580
    0.8752    0.2789    0.8752
    0.1272    0.5469    0.8752
    0.8752    0.8752    0.4854
    0.6326    0.8752    0.8005

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 0.000439453125
                  Bias: 1

量子化する入力の値を定義します。

xInt = int8(-16:4:16)
xInt = 1x9 int8 row vector

   -16   -12    -8    -4     0     4     8    12    16

numerictype オブジェクトを使用

語長が 8 ビットで小数部の長さが 4 ビットの 2 進小数点でスケーリングされた符号付き固定小数点データ型を指定する numerictype オブジェクトを作成します。

ntBP = numerictype(1,8,4);

定義した numerictype ntBP を使用して、入力 xInt を 2 進小数点でスケーリングされた固定小数点データ型に量子化します。

yBP1 = quantize(xInt,ntBP,'Zero')
yBP1 = 
     0     4    -8    -4     0     4    -8    -4     0

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

量子化された出力の範囲を表示します。

range(yBP1)
ans = 
   -8.0000    7.9375

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

最初の 2 つの値と最後の 3 つの値は、出力型の表現可能な範囲の外にあるためラップされています。

入力で数値型プロパティを指定

yBP2 = quantize(xInt,1,8,4,'Zero')
yBP2 = 
     0     4    -8    -4     0     4    -8    -4     0

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

量子化する入力の値を定義します。

xInt = int8(-16:4:16)
xInt = 1x9 int8 row vector

   -16   -12    -8    -4     0     4     8    12    16

勾配とバイアスでスケーリングされた固定小数点データ型を指定する numerictype オブジェクトを作成します。

ntSB = numerictype('Scaling','SlopeBias', ...
      'SlopeAdjustmentFactor',1.8,'Bias',...
      1,'FixedExponent',-12);

定義した numerictype ntSB を使用して、入力 xInt を勾配とバイアスでスケーリングされた固定小数点データ型に量子化します。

ySB = quantize(xInt,ntSB,'Round','Saturate')
ySB = 
  -13.4000  -11.9814   -7.9877   -3.9939   -0.0002    3.9936    7.9873   11.9811   15.3996

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 0.000439453125
                  Bias: 1

量子化された出力の範囲を表示します。

range(ySB)
ans = 
  -13.4000   15.3996

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 0.000439453125
                  Bias: 1

最初の値と最後の値は、出力型の表現可能な範囲の制限にあるため飽和しています。

入力引数

すべて折りたたむ

量子化する入力データ。以下として指定します。

  • 組み込みの符号付きまたは符号なしの整数

  • 2 進小数点でスケーリングされた固定小数点 fi

  • 勾配とバイアスでスケーリングされた固定小数点 fi

fi double と fi single は入力として許容されますが、量子化されずに関数 quantize を通過します。

データ型: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
複素数のサポート: あり

固定小数点データ型を記述する numerictype オブジェクト。

量子化に使用する丸め手法。次のいずれかとして指定します。

  • 'Ceiling' — 許容される次の量子化値に切り上げます。

  • 'Convergent' — 許容される最も近くの量子化値に丸めます。許容される最も近い 2 つの量子化値のちょうど中間にある数値は、丸め後の最下位ビットが 0 になる場合のみ上方に丸められます。

  • 'Floor' — 許容される次の量子化値に切り下げます。

  • 'Nearest' — 許容される最も近くの量子化値に丸めます。許容される最も近くの 2 つの量子化値の中間にある値は、切り上げられます。

  • 'Round' — 許容される最も近くの量子化値に丸めます。許容される最も近くの 2 つの量子化値の中間にある値は、絶対値に切り上げられます。

  • 'Zero' — 許容される次の量子化値まで、負の数は切り上げ、正の数は切り下げます。

データ型: char

オーバーフロー時のアクション。次の値のいずれかとして指定します。

  • 'Saturate' — オーバーフローは飽和されます。

    量子化するデータの値が数値型プロパティで指定される表示可能な数字の最大値から最小値までの範囲の外にある場合、これらの値は、どちらに近いかにより、表示可能な最大値または最小値のどちらかの値に量子化されます。

  • 'Wrap' — オーバーフローはラップされます。

    量子化するデータの値が数値型プロパティで指定される表示可能な数字の最大値から最小値までの範囲の外にある場合、これらの値は、表示可能な最小値に関連するモジュラー演算を使用し、指定された範囲内に戻るようにラップされます。

データ型: char

量子化された固定小数点数の符号属性。1 (符号付き) または 0 (符号なし) として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

出力データの格納整数値の語長 (ビット)。

量子化値の小数部の長さ。スカラー整数として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

拡張機能

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

バージョン履歴

R2006a より前に導入

すべて展開する

参考

| | |