quantizer
创建 quantizer
对象
说明
quantizer
对象描述用于量化的数据类型属性。创建 quantizer
对象后,使用 quantize
来量化双精度数据。您可以使用 quantizer
对象仿真具有任意字长和指数长度的自定义浮点数据类型。
创建对象
语法
描述
使用名称-值参量设置命名属性。您可以指定多个名称-值参量。用单引号将每个属性名称引起来。q
= quantizer(Name,Value
)
使用属性值设置属性。属性值是唯一的;您可以通过在命令中仅指定属性值来设置属性名称。当两个值冲突时,q
= quantizer(Value1,Value2
)quantizer
会设置列表中的最后一个属性值。
用结构体 q
= quantizer(s
)s
中包含的值设置在每个字段名称中命名的属性。
将字符向量元胞数组 q
= quantizer(pn,pv
)pn
中指定的命名属性设置为元胞数组 pv
中的对应值。
创建 quantizer
对象时,可以使用名称-值字符串参量、结构体和名称-值元胞数组参量的组合来设置属性值。
属性
DataMode
— 数据类型模式
'fixed'
(默认) | 'ufixed'
| 'float'
| 'single'
| 'double'
量化中使用的数据类型模式,指定为以下值之一:
'fixed'
- 有符号定点模式。'ufixed'
- 无符号定点模式。'float'
- 自定义精度浮点模式。'single'
- 单精度模式。此模式会覆盖所有其他属性设置。'double'
- 双精度模式。此模式会覆盖所有其他属性设置。
数据类型: char
| struct
| cell
RoundMode
— 要使用的舍入方法
'floor'
(默认) | 'ceil'
| 'convergent'
| 'fix'
| 'nearest'
| 'round'
要使用的舍入方法,指定为以下值之一:
'ceil'
- 向上舍入到下一个允许的量化值。'convergent'
- 舍入到最接近的允许的量化值。仅当舍入后的最低有效位将设置为 0 时,恰好在两个最接近的允许的量化值中间的数字才向上舍入。'fix'
- 将负数向上舍入到下一个允许的量化值或将正数向下舍入到下一个允许的量化值。'floor'
- 向下舍入到下一个允许的量化值。'nearest'
- 舍入到最接近的允许的量化值。位于两个最接近的允许量化值中间的数字会向上舍入。'round'
- 舍入到最接近的允许的量化值。位于两个最接近的允许量化值中间的数字在绝对值上向上舍入。
数据类型: 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 属性值 | 解释格式属性值 |
---|---|
fixed 或 ufixed |
将 字长的范围可以是从 2 到您计算机的内存限值。小数长度的范围可以从 0 到比字长小 1。 |
float |
将 字长的范围可以是从 2 到您计算机的内存限值。小数长度的范围可以从 0 到 11。 |
double |
只读 |
single |
只读 |
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
只读 quantizer
对象状态
当调用 quantize
时,只读 quantizer
对象状态会更新。要重置这些状态,请使用 reset
。
max
— 量化前的最大值
标量
使用 quantize(q,…)
对 quantizer
对象 q
进行量化前的最大值。此值是对 quantize
的连续调用中记录的最大值。
示例: max(q)
示例: q.max
min
— 量化前的最小值
标量
使用 quantize(q,…)
对 quantizer
对象 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 | Quantize numeric data using quantizer object except numbers
within eps of +1 |
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]
使用属性名称和属性值元胞数组来设置 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);
量化为自定义精度浮点数
创建一个 quantizer
对象,指定一个自定义精度浮点数据模式,其字长为 6 位、指数长度为 4 位。
q = quantizer('DataMode','float','Format',[6 4])
q = DataMode = float RoundMode = floor Format = [6 4]
RoundMode
属性使用默认设置 'Floor'
。
使用 quantize
函数通过 quantizer
对象指定的属性量化 x
中的数据。
y = quantize(q,x);
绘制 y
对 x
的图以可视化指定的量化属性对此数据的影响。
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 次下溢。
量化为定点数
创建一个 quantizer
对象,指定一个有符号定点数据模式,其字长为 6 位、小数长度为 1 位,且在溢出时绕回。
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);
绘制 y
对 x
的图以可视化指定的量化属性对此数据的影响。
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)