精度和范围
注意
您必须注意您选择的定点数据类型和定标的精度和范围,以了解是否调用舍入方法或是否发生上溢或下溢。
范围
范围是定点数据类型和定标可以表示的数字范围。下图说明了字长值为 、定标值为 和偏置值为 的 2 的补码定点数的可表示范围:
对于任何数据类型的有符号和无符号定点数,不同位模式的数量都为 2wl。
例如,采用 2 的补码方法时,需要表示负数和零,因此最大值为 2wl -1 – 1。由于零只有一种表示,因此正数和负数的数量不相等。这意味着存在一个 的表示,但没有 的表示:
溢出处理
由于定点数据类型表示有限范围内的数字,因此如果运算结果大于或小于该范围内的数字,则可能发生上溢和下溢。
Fixed-Point Designer™ 软件允许您对溢出进行饱和或绕回处理。饱和将正溢出表示为正在使用的范围中的最大正数,将负溢出表示为正在使用的范围中的最大负数。绕回使用模算术将溢出转换回数据类型的可表示范围。
创建 fi
对象时,任何溢出都会经过饱和处理。默认 fimath 的 OverflowAction
属性为 saturate
。您可以通过将 fipref
对象的 LoggingMode
属性设置为 on
来记录上溢和下溢。
精度
定点数的精度是其数据类型和定标可表示的连续值之间的差值,等于其最低有效位的值。最低有效位的值(因此也是数字的精度)由小数位数决定。定点值的误差小于等于其数据类型和定标所确定精度的一半。
例如,二进制小数点右侧具有四位的定点表示的精度为 2-4(即 0.0625),这是其最低有效位的值。此数据类型和定标范围内的任何数字的误差都小于等于 (2-4)/2(即 0.03125),即精度的一半。这是以有限精度表示数字的示例。
舍入方法
当您以有限精度表示数字时,并非可用范围内的每个数字都可以精确表示。如果数字不能由指定的数据类型和定标精确表示,则使用舍入方法将该值转换为可表示的数字。虽然在舍入操作中始终会丢失一定的精度,但带来的操作成本和偏置量取决于舍入方法本身。为使您在成本和偏置之间权衡方面有更大的灵活性,Fixed-Point Designer 软件当前支持以下舍入方法:
Ceiling
朝正无穷方向舍入到最接近的可表示数字。Convergent
舍入到最接近的可表示数字。在舍入机会均等的情况下,convergent
舍入到最邻近的偶数。这是工具箱提供的偏置最小的舍入方法。Zero
在零方向上舍入到最接近的可表示数字。Floor
(相当于 2 的补码截断)朝负无穷方向舍入到最接近的可表示数字。Nearest
舍入到最接近的可表示数字。在舍入机会均等的情况下,nearest
朝正无穷方向舍入到最邻近的可表示数字。此舍入方法是fi
对象创建和fi
算术的默认值。Round
舍入到最接近的可表示数字。在舍入机会均等的情况下,round
方法进行如下舍入:将正数朝正无穷方向舍入到最邻近的可表示数字。
将负数朝负无穷方向舍入到最邻近的可表示数字。
选择舍入方法. 每个舍入方法都有一组固有属性。根据您的设计要求,这些属性可能会使舍入方法更适合您或更不适合您。通过了解设计要求和每个舍入方法的属性,您可以确定哪种方案最适合您的需要。最重要的考虑因素是:
成本 - 在不考虑所用硬件的情况下,舍入方法所需的处理成本如何?
低 - 该方法只需极少的处理周期。
中 - 该方法需要中等数量的处理周期。
高 - 该方法需要较多处理周期。
注意
此处提供的成本估算没有考虑硬件。有些处理器内置了舍入模式,因此在计算每个舍入模式的真实成本之前,应仔细考虑所用的硬件。
偏置 - 舍入值减去原始值后的预期值:?
- 舍入方法引入负偏置。
- 舍入方法无偏置。
- 舍入方法引入正偏置。
下表比较了 Fixed-Point Designer 产品中可用的不同舍入方法。
Fixed-Point Designer 舍入模式 | 成本 | 偏置 |
---|---|---|
向上 | 低 | 大的正向偏置 |
收敛 | 高 | 无偏置 |
零 | 低 |
|
向下 | 低 | 大的负向偏置 |
最邻近值 | 中等 | 小的正向偏置 |
舍入 | 高 |
|
Simplest (仅限 Simulink®) | 低 | 取决于操作 |