Main Content

unitquantizer

unitquantizer オブジェクトの作成

説明

unitquantizer オブジェクトは、量子化に使用するデータ型プロパティを記述します。unitquantizer オブジェクトを作成した後、quantize を使用して倍精度データを量子化します。unitquantizer オブジェクトは、その quantize メソッドで eps(q)+1 以内の数値を厳密に +1 に量子化することを除き、quantizer オブジェクトと同じです。unitquantizer オブジェクトを使用して、任意の語長と指数部の長さをもつカスタムの浮動小数点データ型をシミュレートできます。

作成

説明

q = unitquantizer は、プロパティが既定値に設定された unitquantizer オブジェクトを作成します。このオブジェクトを使用して値を量子化するには、quantize を使用します。

q = unitquantizer(Name,Value) は、名前と値の引数を使用して、指定された名前のプロパティを設定します。名前と値の引数は複数指定できます。各プロパティ名を一重引用符で囲みます。

q = unitquantizer(Value1,Value2) は、プロパティ値を使用してプロパティを設定します。プロパティ値は一意であるため、コマンドでプロパティ値のみを指定してプロパティ名を設定できます。2 つの値が競合する場合、unitquantizer はリストの後のプロパティ値を設定します。

q = unitquantizer(s) は、各フィールド名で指定された名前のプロパティを構造体 s に格納された値で設定します。

q = unitquantizer(pn,pv) は、文字ベクトルの cell 配列 pn で指定された名前のプロパティを cell 配列 pv の対応する値に設定します。

unitquantizer オブジェクトを作成するときは、名前と値の string の引数、構造体、および名前と値の cell 配列の引数を組み合わせて使用してプロパティ値を設定できます。

プロパティ

すべて展開する

量子化で使用する演算のタイプ。次の値のいずれかとして指定します。

  • 'fixed' — 符号付き固定小数点モード。

  • 'ufixed' — 符号なし固定小数点モード。

  • 'float' — カスタム精度の浮動小数点モード。

  • 'single' — 単精度モード。このモードは他のすべてのプロパティ設定をオーバーライドします。

  • 'double' — 倍精度モード。このモードは他のすべてのプロパティ設定をオーバーライドします。

データ型: char | struct | cell

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

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

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

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

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

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

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

データ型: char | struct | cell

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

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

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

  • 'wrap' — オーバーフローは表現可能な値の範囲にラップされます。

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

このプロパティは固定小数点データ型モードにのみ適用されます。DataMode プロパティを floatdouble、または single に設定すると、このプロパティは読み取り専用プロパティになります。

メモ

ダイナミック レンジを超える浮動小数点数は ±Inf にオーバーフローします。

データ型: char | struct | cell

unitquantizer オブジェクトのデータ形式。このプロパティの値の解釈は、DataMode プロパティの値によって異なります。

DataMode プロパティの値Format プロパティの値の解釈
fixed または ufixed

[wordlength fractionlength]

Format プロパティの値を 2 要素の行ベクトルとして指定します。最初の要素は quantizer オブジェクトの語長のビット数、2 番目の要素は quantizer オブジェクトの小数部の長さのビット数です。

語長の範囲は 2 から PC のメモリの制限までです。小数部の長さの範囲は 0 から語長よりも 1 小さい長さまでです。

float

[wordlength exponenetlength]

Format プロパティの値を 2 要素の行ベクトルとして指定します。最初の要素は unitquantizer オブジェクトの語長のビット数、2 番目の要素は unitquantizer オブジェクトの指数部の長さのビット数です。

語長の範囲は 2 から PC のメモリの制限までです。小数部の長さの範囲は 0 から 11 までです。

double

[64 11]

読み取り専用の Format プロパティの値により、語長と指数部の長さが自動的に設定されます。

single

[32 8]

読み取り専用の Format プロパティの値により、語長と指数部の長さが自動的に設定されます。

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

読み取り専用の unitquantizer オブジェクトの状態

読み取り専用の unitquantizer オブジェクトの状態は、quantize が呼び出されると更新されます。それらの状態をリセットするには、reset を使用します。

unitquantizer オブジェクト q に対する quantize(q,…) の呼び出しでの量子化前の最大値。スカラーとして指定します。この値は、quantize の連続する呼び出しで記録された最大値です。

例: max(q)

例: q.max

unitquantizer オブジェクト q に対する quantize(q,…) の呼び出しでの量子化前の最小値。スカラーとして指定します。この値は、quantize の連続する呼び出しで記録された最小値です。

例: min(q)

例: q.min

unitquantizer オブジェクト q に対する quantize(q,…) の呼び出しでのオーバーフローの回数。スカラーとして指定します。この値は、quantize の連続する呼び出しで累積されます。オーバーフローは、量子化したときに q の範囲外になる値と定義されます。

例: noverflows(q)

例: q.noverflows

unitquantizer オブジェクト q に対する quantize(q,…) の呼び出しでのアンダーフローの回数。この値は、quantize の連続する呼び出しで累積されます。アンダーフローは、量子化前は非ゼロで量子化後にゼロになる数と定義されます。

例: nunderflows(q)

例: q.nunderflows

unitquantizer オブジェクト q に対する quantize(q,…) の呼び出しでの量子化操作の回数。この値は、quantize の連続する呼び出しで累積されます。

例: noperations(q)

例: q.noperations

オブジェクト関数

すべて折りたたむ

unitquantizer オブジェクト q を使用してベクトル x を量子化します。

x = (0.8:.1:1.2)';
q = unitquantizer([4 3]);
y = quantize(q,x);
z = [x y]
e = eps(q)
z =

    0.8000    0.7500
    0.9000    1.0000
    1.0000    1.0000
    1.1000    1.0000
    1.2000    1.0000


e =

    0.1250

quantize は、eps+1 以内の数値を除いて x の要素を量子化します。

バージョン履歴

R2008a で導入