このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
quantizer
quantizer
オブジェクトの作成
説明
quantizer
オブジェクトは、量子化に使用するデータ型プロパティを記述します。quantizer
オブジェクトを作成した後、quantize
を使用して倍精度データを量子化します。quantizer
オブジェクトを使用して、任意の語長と指数部の長さをもつカスタムの浮動小数点データ型をシミュレートできます。
作成
構文
説明
は、名前と値の引数を使用して、指定された名前のプロパティを設定します。名前と値の引数は複数指定できます。各プロパティ名を一重引用符で囲みます。q
= quantizer(Name,Value
)
は、プロパティ値を使用してプロパティを設定します。プロパティ値は一意であり、コマンドでプロパティ値のみを指定してプロパティ名を設定できます。2 つの値が競合する場合、q
= quantizer(Value1,Value2
)quantizer
はリストの後のプロパティ値を設定します。
は、各フィールド名で指定された名前のプロパティを構造体 q
= quantizer(s
)s
に格納された値で設定します。
は、文字ベクトルの cell 配列 q
= quantizer(pn,pv
)pn
で指定された名前のプロパティを cell 配列 pv
の対応する値に設定します。
quantizer
オブジェクトを作成するときは、名前と値の string の引数、構造体、および名前と値の cell 配列の引数を組み合わせて使用してプロパティ値を設定できます。
プロパティ
DataMode
— データ型モード
'fixed'
(既定値) | 'ufixed'
| 'float'
| 'single'
| 'double'
量子化で使用するデータ型モード。次の値のいずれかとして指定します。
'fixed'
— 符号付き固定小数点モード。'ufixed'
— 符号なし固定小数点モード。'float'
— カスタム精度の浮動小数点モード。'single'
— 単精度モード。このモードは他のすべてのプロパティ設定をオーバーライドします。'double'
— 倍精度モード。このモードは他のすべてのプロパティ設定をオーバーライドします。
データ型: char
| struct
| cell
RoundMode
— 使用する丸め手法です。
'floor'
(既定値) | 'ceil'
| 'convergent'
| 'fix'
| 'nearest'
| 'round'
使用する丸め手法。次の値のいずれかとして指定します。
'ceil'
— 許容される次の量子化値に切り上げます。'convergent'
— 許容される最も近くの量子化値に丸めます。許容される最も近い 2 つの量子化値のちょうど中間にある数値は、丸め後の最下位ビットが 0 になる場合のみ上方に丸められます。'fix'
— 許容される次の量子化値まで、負の数は切り上げ、正の数は切り下げます。'floor'
— 許容される次の量子化値に切り下げます。'nearest'
— 許容される最も近くの量子化値に丸めます。許容される最も近くの 2 つの量子化値の中間にある値は、切り上げられます。'round'
— 許容される最も近くの量子化値に丸めます。許容される最も近くの 2 つの量子化値の中間にある値は、絶対値に切り上げられます。
データ型: char
| struct
| cell
OverflowMode
— オーバーフロー時のアクション
'saturate'
(既定値) | 'wrap'
オーバーフロー時のアクション。次の値のいずれかとして指定します。
'saturate'
— オーバーフローは飽和されます。量子化するデータの値がデータ形式プロパティで指定される表現可能な数字の最大値から最小値までの範囲の外にある場合、それらの値は、どちらに近いかに応じて、表現可能な最大値または最小値のどちらかの値に量子化されます。
'wrap'
— オーバーフローは表現可能な値の範囲にラップされます。量子化するデータの値がデータ形式プロパティで指定される表現可能な数字の最大値から最小値までの範囲の外にある場合、それらの値は、表現可能な最小値を基準とするモジュラー演算を使用して、その範囲内に戻るようにラップされます。
このプロパティは固定小数点データ型モードにのみ適用されます。DataMode
プロパティを float
、double
、または single
に設定すると、このプロパティは読み取り専用プロパティになります。
メモ
ダイナミック レンジを超える浮動小数点数は ±Inf
にオーバーフローします。
データ型: char
| struct
| cell
Format
— quantizer
オブジェクトのデータ形式
[16 15]
(既定値) | [wordlength fractionlength]
| [wordlength exponentlength]
| [64 11]
| [32 8]
quantizer
オブジェクトのデータ形式。このプロパティの値の解釈は、DataMode
プロパティの値によって異なります。
DataMode プロパティの値 | Format プロパティの値の解釈 |
---|---|
fixed または ufixed |
語長の範囲は 2 から PC のメモリの制限までです。小数部の長さの範囲は 0 から語長よりも 1 小さい長さまでです。 |
float |
語長の範囲は 2 から PC のメモリの制限までです。小数部の長さの範囲は 0 から 11 までです。 |
double |
読み取り専用の |
single |
読み取り専用の |
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
読み取り専用の quantizer
オブジェクトの状態
読み取り専用の quantizer
オブジェクトの状態は、quantize
が呼び出されると更新されます。それらの状態をリセットするには、reset
を使用します。
max
— 量子化前の最大値
スカラー
quantizer
オブジェクト q
に対する quantize(q,…)
の呼び出しでの量子化前の最大値。この値は、quantize
の連続する呼び出しで記録された最大値です。
例: max(q)
例: q.max
min
— 量子化前の最小値
スカラー
quantizer
オブジェクト q
に対する quantize(q,…)
の呼び出しでの量子化前の最小値。この値は、quantize
の連続する呼び出しで記録された最小値です。
例: min(q)
例: q.min
noverflows
— オーバーフローの総数
スカラー
quantizer
オブジェクト q
に対する quantize(q,…)
の呼び出しでのオーバーフローの回数。この値は、quantize
の連続する呼び出しで累積されます。オーバーフローは、量子化したときに q
の範囲外になる値と定義されます。
例: noverflows(q)
例: q.noverflows
nunderflows
— アンダーフローの総数
スカラー
quantizer
オブジェクト q
に対する quantize(q,…)
の呼び出しでのアンダーフローの回数。この値は、quantize
の連続する呼び出しで累積されます。アンダーフローは、量子化前は非ゼロで量子化後にゼロになる数と定義されます。
例: nunderflows(q)
例: q.nunderflows
noperations
— 量子化されるデータ点の数
スカラー
quantizer
オブジェクト q
に対する quantize(q,…)
の呼び出しでの量子化操作の回数。この値は、quantize
の連続する呼び出しで累積されます。
例: noperations(q)
例: q.noperations
オブジェクト関数
quantize | quantizer オブジェクトを使用した数値データの量子化 |
unitquantize | eps が +1 以内の数値を除く quantizer オブジェクトを使用した数値データの量子化 |
wordlength | quantizer オブジェクトの語長 |
例
quantizer
オブジェクトの作成
quantizer
オブジェクトを既定のプロパティ値で作成します。
q = quantizer
q = DataMode = fixed RoundMode = floor OverflowMode = saturate Format = [16 15]
quantizer
オブジェクトをコピーするには、代入を使用します。
q = quantizer; r = q; isequal(q,r)
ans = logical
1
プロパティの名前と値の引数を使用して quantizer
オブジェクトのプロパティを設定します。
q = quantizer('Mode','fixed','RoundMode','ceil',... 'OverflowMode','saturate','Format',[5 4])
q = DataMode = fixed RoundMode = ceil OverflowMode = saturate Format = [5 4]
コマンドでプロパティ値のみをリストして quantizer
オブジェクトのプロパティを設定します。
q = quantizer('fixed','ceil','saturate',[5 4])
q = DataMode = fixed RoundMode = ceil OverflowMode = saturate Format = [5 4]
構造体を使用して quantizer
オブジェクトのプロパティを設定します。
struct.DataMode = 'fixed'; struct.RoundMode = 'ceil'; struct.OverflowMode = 'saturate'; struct.Format = [5 4]; q = quantizer(struct)
q = DataMode = fixed RoundMode = ceil OverflowMode = saturate Format = [5 4]
プロパティ名とプロパティ値の cell 配列を使用して quantizer
オブジェクトのプロパティを設定します。
pn = {'Mode','RoundMode','Overflowmode','Format'}; pv = {'fixed','ceil','saturate',[5 4]}; q = quantizer(pn,pv)
q = DataMode = fixed RoundMode = ceil OverflowMode = saturate Format = [5 4]
quantizer
オブジェクトによるデータの量子化
quantize
を使用してデータを量子化し、量子化が quantizer
オブジェクトの状態にどのように影響するかを確認し、reset
を使用して quantizer
オブジェクトの状態を既定値にリセットします。
サンプル データ セットを作成し、そのデータ セットを量子化するときに使用する量子化パラメーターを quantizer
オブジェクトを作成して指定します。
format long g rng(0,'twister'); x = rng(100); q = quantizer([16,14])
q = DataMode = fixed RoundMode = floor OverflowMode = saturate Format = [16 14]
max
と noverflows
の値を取得します。
q.max q.noverflows
ans = -1.79769313486232e+308 ans = 0
max
が -realmax
と等しいことに注意してください。これは、量子化器 q
がリセット状態であることを示しています。
関数 quantize
を使用して、quantizer
オブジェクトの指定に従ってデータ セットを量子化します。
y = quantize(q,x);
Warning: 625 overflow(s) occurred in the fi quantize operation.
max
と noverflows
の値を確認します。
q.max q.noverflows
ans = 1.99993896484375 ans = 625
記録された最大値が量子化後に取得された値であることに注意してください。つまり、q.max == max(y)
です。
quantizer
の状態をリセットして確認します。
reset(q) q.maxlog q.noverflows
ans = -1.79769313486232e+308 ans = 0
quantizer
オブジェクトを使用したデータの量子化
この例では、quantizer
オブジェクトで指定されるプロパティを使用してデータを量子化する方法を示します。
まず、いくつかの量子化するデータを作成します。
x = linspace(-15,15,1000);
カスタム精度の浮動小数点に量子化
語長が 6 ビットで指数部の長さが 4 ビットのカスタム精度の浮動小数点データ モードを指定する quantizer
オブジェクトを作成します。
q = quantizer('DataMode','float','Format',[6 4])
q = DataMode = float RoundMode = floor Format = [6 4]
RoundMode
プロパティには、既定の設定の 'Floor'
が使用されます。
関数 quantize
を使用して、quantizer
オブジェクトで指定されるプロパティを使って x
のデータを量子化します。
y = quantize(q,x);
x
に対して y
をプロットし、このデータに対する指定された量子化プロパティの影響を可視化します。
plot(x,x,x,y); title(tostring(q)); legend('Input Data','Quantized Data','Location','northwest');
quantizer
オブジェクトの読み取り専用のプロパティを使用して追加の情報にアクセスできます。
q.noverflows
ans = 0
q.nunderflows
ans = 0
この例では、量子化操作で発生したオーバーフローが 0 回、アンダーフローが 0 回でした。
固定小数点に量子化
語長が 6 ビットで小数部の長さが 1 ビット、オーバーフロー時にラップする符号付き固定小数点データ モードを指定する quantizer
オブジェクトを作成します。
q = quantizer([6 1],'wrap')
q = DataMode = fixed RoundMode = floor OverflowMode = wrap Format = [6 1]
quantizer
は、既定の DataMode
プロパティ 'fixed'
と既定の RoundMode
プロパティ 'Floor'
を使用します。
関数 quantize
を使用して、quantizer
オブジェクトで指定されるプロパティを使って x
のデータを量子化します。
y = quantize(q,x);
x
に対して y
をプロットし、このデータに対する指定された量子化プロパティの影響を可視化します。
plot(x,x,x,y); title(tostring(q)); legend('Input Data','Quantized Data','Location','northwest');
quantizer
オブジェクトの読み取り専用のプロパティを使用して追加の情報にアクセスできます。
q.noverflows
ans = 0
q.nunderflows
ans = 17
この例では、量子化操作で発生したオーバーフローが 0 回、アンダーフローが 17 回でした。
バージョン履歴
R2006a より前に導入
参考
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)