Main Content

quantizenumeric

数値データの量子化

説明

y = quantizenumeric(x,s,w,f) は、符号属性 s、語長 w、小数部の長さ f を使用して、x で指定された値を量子化します。

quantizenumeric は、double を使用して完全精度の算術をシミュレートしてから、固定小数点型にキャストせずにアルゴリズムの特定のステップに量子化を追加する場合に使用します。

y = quantizenumeric(x,s,w,f,r) は、丸めモード r も指定します。

y = quantizenumeric(x,s,w,f,r,o) は、オーバーフロー モード o も指定します。

すべて折りたたむ

語長が 16 ビットで小数部の長さが 13 ビットの符号付き数値型と正の無限大方向への丸めを使用して、pi の値を量子化します。

x = pi;
y = quantizenumeric(x,1,16,13,'ceil')
y = 3.1416

別の丸め手法を指定します。ゼロ方向への丸めによる量子化値への影響を確認します。

x = pi;
y = quantizenumeric(x,1,16,13,'fix')
y = 3.1415

この例では、数値データの量子化に対するオーバーフロー アクションの効果を示します。

いくつかのデータを作成し、オーバーフローで飽和するように指定して量子化します。

x = linspace(-5,5,100);
y = quantizenumeric(x,1,6,4,'floor','saturate');
plot(x,x,x,y)

Figure contains an axes object. The axes object contains 2 objects of type line.

オーバーフロー時にラップするようにオーバーフロー アクションを変更し、量子化データがどのように変わるかを確認します。

z = quantizenumeric(x,1,6,4,'floor','wrap');
plot(x,x,x,z);

Figure contains an axes object. The axes object contains 2 objects of type line.

入力引数

すべて折りたたむ

量子化する値。スカラー、ベクトル、行列、または多次元配列として指定します。

データ型: double
複素数のサポート: あり

量子化値の符号属性。0 または 'false' (符号なし) あるいは 1 または 'true' (符号付き) として指定します。

データ型: double

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

データ型: double

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

データ型: double

量子化に使用する丸め手法。文字ベクトルとして指定します。

  • 'ceil' — 正の無限大方向に丸める ('ceiling' と同じ)

  • 'ceiling' — 正の無限大方向に丸める ('ceil' と同じ)

  • 'convergent' — 最も近い偶数方向に丸める

  • 'fix' — ゼロ方向に丸める ('zero' と同じ)

  • 'floor' — 負の無限大方向に丸める

  • 'nearest' — 最も近い方向に丸める (等距離の場合は正の無限大方向に丸める)

  • 'round' — 最も近い方向に丸める (等距離の場合は絶対値が大きい方に丸める)

  • 'zero' — ゼロ方向に丸める ('fix' と同じ)

データ型: char

量子化に使用するオーバーフロー アクション。'saturate' または 'wrap' として指定します。

データ型: char

出力引数

すべて折りたたむ

量子化された出力値。スカラー、ベクトル、行列、または多次元配列として返されます。y は常に x と同じ次元で、常に double です。

ヒント

  • quantizenumeric は、double を使用して完全精度の算術をシミュレートしてから、固定小数点型にキャストせずにアルゴリズムの特定のステップに量子化を追加する場合に使用します。

  • 固定小数点アルゴリズムを設計する際は、castzerosoneseye、および subsasgn を使用して、コア アルゴリズムをデータ型の定義から分離します。

バージョン履歴

R2016a で導入

すべて展開する