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 配列の引数を組み合わせて使用してプロパティ値を設定できます。
プロパティ
量子化で使用するデータ型モード。次の値のいずれかとして指定します。
'fixed'— 符号付き固定小数点モード。'ufixed'— 符号なし固定小数点モード。'float'— カスタム精度の浮動小数点モード。'single'— 単精度モード。このモードは他のすべてのプロパティ設定をオーバーライドします。'double'— 倍精度モード。このモードは他のすべてのプロパティ設定をオーバーライドします。
データ型: char | struct | cell
使用する丸め手法。次の値のいずれかとして指定します。
'ceil'— 許容される次の量子化値に切り上げます。'convergent'— 許容される最も近くの量子化値に丸めます。許容される最も近い 2 つの量子化値のちょうど中間にある数値は、丸め後の最下位ビットが 0 になる場合のみ上方に丸められます。'fix'— 許容される次の量子化値まで、負の数は切り上げ、正の数は切り下げます。'floor'— 許容される次の量子化値に切り下げます。'nearest'— 許容される最も近くの量子化値に丸めます。許容される最も近くの 2 つの量子化値の中間にある値は、切り上げられます。'round'— 許容される最も近くの量子化値に丸めます。許容される最も近くの 2 つの量子化値の中間にある値は、絶対値に切り上げられます。
データ型: char | struct | cell
オーバーフロー時のアクション。次の値のいずれかとして指定します。
'saturate'— オーバーフローは飽和されます。量子化するデータの値がデータ形式プロパティで指定される表現可能な数字の最大値から最小値までの範囲の外にある場合、それらの値は、どちらに近いかに応じて、表現可能な最大値または最小値のどちらかの値に量子化されます。
'wrap'— オーバーフローは表現可能な値の範囲にラップされます。量子化するデータの値がデータ形式プロパティで指定される表現可能な数字の最大値から最小値までの範囲の外にある場合、それらの値は、表現可能な最小値を基準とするモジュラー演算を使用して、その範囲内に戻るようにラップされます。
このプロパティは固定小数点データ型モードにのみ適用されます。DataMode プロパティを float、double、または single に設定すると、このプロパティは読み取り専用プロパティになります。
メモ
ダイナミック レンジを超える浮動小数点数は ±Inf にオーバーフローします。
データ型: char | struct | cell
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 を使用します。
quantizer オブジェクト q に対する quantize(q,…) の呼び出しでの量子化前の最大値。この値は、quantize の連続する呼び出しで記録された最大値です。
例: max(q)
例: q.max
quantizer オブジェクト q に対する quantize(q,…) の呼び出しでの量子化前の最小値。この値は、quantize の連続する呼び出しで記録された最小値です。
例: min(q)
例: q.min
quantizer オブジェクト q に対する quantize(q,…) の呼び出しでのオーバーフローの回数。この値は、quantize の連続する呼び出しで累積されます。オーバーフローは、量子化したときに q の範囲外になる値と定義されます。
例: noverflows(q)
例: q.noverflows
quantizer オブジェクト q に対する quantize(q,…) の呼び出しでのアンダーフローの回数。この値は、quantize の連続する呼び出しで累積されます。アンダーフローは、量子化前は非ゼロで量子化後にゼロになる数と定義されます。
例: nunderflows(q)
例: q.nunderflows
quantizer オブジェクト q に対する quantize(q,…) の呼び出しでの量子化操作の回数。この値は、quantize の連続する呼び出しで累積されます。
例: noperations(q)
例: q.noperations
オブジェクト関数
quantize | quantizer オブジェクトを使用した数値データの量子化 |
unitquantize | eps が +1 以内の数値を除く quantizer オブジェクトを使用した数値データの量子化 |
wordlength | 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]
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 =
0max が -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 オブジェクトで指定されるプロパティを使用してデータを量子化する方法を示します。
まず、いくつかの量子化するデータを作成します。
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');
![Figure contains an axes object. The axes object with title quantizer('float', 'floor', [6 4]) contains 2 objects of type line. These objects represent Input Data, Quantized Data.](../../examples/fixedpoint/win64/QuantizeDataUsingTheQuantizerObjectExample_01.png)
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');
![Figure contains an axes object. The axes object with title quantizer('fixed', 'floor', 'wrap', [6 1]) contains 2 objects of type line. These objects represent Input Data, Quantized Data.](../../examples/fixedpoint/win64/QuantizeDataUsingTheQuantizerObjectExample_02.png)
quantizer オブジェクトの読み取り専用のプロパティを使用して追加の情報にアクセスできます。
q.noverflows
ans = 0
q.nunderflows
ans = 17
この例では、量子化操作で発生したオーバーフローが 0 回、アンダーフローが 17 回でした。
バージョン履歴
R2006a より前に導入quantizer オブジェクトを使用した quantize 関数による数値データの量子化で、int64 型および uint64 型がサポートされるようになりました。
以下に例を示します。
q = quantizer('fixed','floor','saturate',[64 11]) x = int64(pi) y = quantize(q,x)
q =
DataMode = fixed
RoundMode = floor
OverflowMode = saturate
Format = [64 11]
x =
int64
3
y =
3参考
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)