Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

round

使用 quantizer 对象将 fi 对象舍入到最接近的整数或舍入输入数据

说明

示例

y = round(a)fi 对象 a 舍入到最接近的整数。在舍入机会均等的情况下,round 将值舍入到绝对值较大的最接近整数。舍入值在 fi 对象 y 中返回。

示例

y = round(q,x) 使用 quantizer 对象 qRoundingMethodFractionLength 设置对数值数据 x 进行舍入,但在运算过程中不检查溢出。输入 x 必须为内置的数值变量。使用 cast 函数来处理 fi 对象。

示例

全部折叠

以下示例说明 round 函数如何影响字长为 8、小数长度为 3 的有符号 fi 对象的 numerictype 属性。

a = fi(pi,1,8,3)
a = 
    3.1250

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 3
y = round(a)
y = 
     3

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 6
        FractionLength: 0

以下示例说明 round 函数如何影响字长为 8、小数长度为 12 的有符号 fi 对象的 numerictype 属性。

a = fi(0.025,1,8,12)
a = 
    0.0249

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 12
y = round(a)
y = 
     0

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 2
        FractionLength: 0

此示例说明如何使用由 quantizer 对象 q 指定的舍入方法和小数长度来舍入 x 中的数值数据。

q = quantizer('fixed','convergent','wrap',[3 2])
q =


        DataMode = fixed
       RoundMode = convergent
    OverflowMode = wrap
          Format = [3  2]
x = (-2:eps(q)/4:2)';
y = round(q,x);
plot(x,[x,y],'.-'); axis square

Figure contains an axes object. The axes object contains 2 objects of type line.

函数 convergentnearestround 在处理最低有效位为 5 的值时的方式有所不同。

  • convergent 函数将结值舍入到最邻近的偶数。

  • nearest 函数将结值朝正无穷方向舍入到最邻近的整数。

  • round 函数将结值舍入到最邻近的、绝对值较大的整数。

此示例说明对于给定输入 a 的这些处理差异。

a = fi([-3.5:3.5]');
y = [a convergent(a) nearest(a) round(a)]
y = 
   -3.5000   -4.0000   -3.0000   -4.0000
   -2.5000   -2.0000   -2.0000   -3.0000
   -1.5000   -2.0000   -1.0000   -2.0000
   -0.5000         0         0   -1.0000
    0.5000         0    1.0000    1.0000
    1.5000    2.0000    2.0000    2.0000
    2.5000    2.0000    3.0000    3.0000
    3.5000    3.9999    3.9999    3.9999

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

输入参数

全部折叠

输入 fi 数组,指定为标量、向量、矩阵或多维数组。

对于复数 fi 对象,虚部和实部是分别进行舍入的。

round 不支持具有非平凡斜率和偏置定标的 fi 对象。当斜率为 2 的整数次幂且偏置为 0 时,斜率和偏置定标是平凡的。

数据类型: fi
复数支持:

RoundingMethodFractionLength 设置,指定为 quantizer 对象。

示例: q = quantizer('fixed', 'round', [3 2]);

要使用 quantizer 对象 q 量化的输入数组,指定为标量、向量、矩阵或多维数组。

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

算法

  • ya 具有相同的 fimath 对象和 DataType 属性。

  • aDataType 属性为 singledoubleboolean 时,ynumerictypea 的属性设置相同。

  • a 的小数长度为零或负数时,a 已经是整数,并且 ya 具有相同的 numerictype

  • a 的小数长度为正值时,y 的小数长度为 0,其符号与 a 的符号相同,其字长为 a 的字长与小数长度之差加一位。如果 a 有符号,则 y 的最小字长是 2。如果 a 无符号,则 y 的最小字长是 1

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。

版本历史记录

在 R2006a 之前推出