主要内容

unitquantizer

创建 unitquantizer 对象

说明

unitquantizer 对象描述用于量化的数据类型属性。创建 unitquantizer 对象后,使用 quantize 来量化双精度数据。unitquantizer 对象与 quantizer 对象相同,区别在于前者的 quantize 方法将在 +1eps(q) 范围内的数量化为恰好 +1。您可以使用 unitquantizer 对象仿真具有任意字长和指数长度的自定义浮点数据类型。

创建对象

描述

q = unitquantizer 创建一个属性设置为其默认值的 unitquantizer 对象。要使用此对象量化值,请使用 quantize

q = unitquantizer(Name,Value) 使用名称-值参量设置命名属性。您可以指定多个名称-值参量。用单引号将每个属性名称引起来。

q = unitquantizer(Value1,Value2) 使用属性值设置属性。属性值是唯一的,因此您可以通过在命令中仅指定属性值来设置属性名称。当两个值冲突时,unitquantizer 会设置列表中的最后一个属性值。

示例

q = unitquantizer(s) 用结构体 s 中包含的值设置在每个字段名称中命名的属性。

q = unitquantizer(pn,pv) 将字符向量元胞数组 pn 中指定的命名属性设置为元胞数组 pv 中的对应值。

创建 unitquantizer 对象时,可以使用名称-值字符串参量、结构体和名称-值元胞数组参量的组合来设置属性值。

属性

全部展开

量化中使用的算术的类型,指定为以下值之一:

  • 'fixed' - 有符号定点模式。

  • 'ufixed' - 无符号定点模式。

  • 'float' - 自定义精度浮点模式。

  • 'single' - 单精度模式。此模式会覆盖所有其他属性设置。

  • 'double' - 双精度模式。此模式会覆盖所有其他属性设置。

数据类型: char | struct | cell

要使用的舍入方法,指定为以下值之一:

  • 'ceil' - 向上舍入到下一个允许的量化值。

  • 'convergent' - 舍入到最接近的允许的量化值。仅当舍入后的最低有效位将设置为 0 时,恰好在两个最接近的允许的量化值中间的数字才向上舍入。

  • 'fix' - 将负数向上舍入到下一个允许的量化值或将正数向下舍入到下一个允许的量化值。

  • 'floor' - 向下舍入到下一个允许的量化值。

  • 'nearest' - 舍入到最接近的允许的量化值。位于两个最接近的允许量化值中间的数字会向上舍入。

  • 'round' - 舍入到最接近的允许的量化值。位于两个最接近的允许量化值中间的数字在绝对值上向上舍入。

数据类型: char | struct | cell

对溢出采取的操作,指定为以下值之一:

  • 'saturate' - 将溢出饱和处理。

    当要量化数据的值超出由数据格式属性指定的最大和最小可表示数的范围时,这些值将被量化为最接近的最大或最小可表示值。

  • 'wrap' - 溢出绕回到可表示值的范围。

    当要量化的数据的值超出由数据格式属性指定的最大和最小可表示数的范围时,使用相对于最小可表示数的模块化算术将这些值绕回到该范围内。

此属性仅适用于定点数据类型模式。当您将 DataMode 属性设置为 floatdoublesingle 时,此属性将变为只读属性。

注意

超出动态范围的浮点数溢出到 ±Inf

数据类型: char | struct | cell

unitquantizer 对象的数据格式。此属性值的解释取决于 DataMode 属性的值。

DataMode 属性值解释格式属性值
fixedufixed

[wordlength fractionlength]

Format 属性值指定为一个二元素行向量,其中第一个元素是 quantizer 对象字长的位数,第二个元素是 quantizer 对象小数长度的位数。

字长的范围可以是从 2 到您计算机的内存限值。小数长度的范围可以从 0 到比字长小 1。

float

[wordlength exponenetlength]

Format 属性值指定为一个二元素行向量,其中第一个元素是 unitquantizer 对象字长的位数,第二个元素是 unitquantizer 对象指数长度的位数。

字长的范围可以是从 2 到您计算机的内存限值。小数长度的范围可以从 0 到 11。

double

[64 11]

只读 Format 属性值自动指定字长和指数长度。

single

[32 8]

只读 Format 属性值自动指定字长和指数长度。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

只读 unitquantizer 对象状态

当调用 quantize 时,只读 unitquantizer 对象状态会更新。要重置这些状态,请使用 reset

调用 quantize(q,…)unitquantizer 对象 q 进行量化前的最大值,指定为标量。此值是对 quantize 的连续调用中记录的最大值。

示例: max(q)

示例: q.max

调用 quantize(q,…)unitquantizer 对象 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 量化 x 的元素,但与 +1 的差值在 eps 范围内的数值除外。

版本历史记录

在 R2008a 中推出