为什么INT8、INT16 INT32铸造在MATLAB一轮值到另一个整数的仿真软件时都配置为圆到最近的整数?金宝app

33视图(30天)
我用INT8、INT16 INT32在MATLAB函数把领带数字,例如,-0.5,-1.5,0.5,1.5等等。这些函数的文档提到双和单值四舍五入为最接近的整数价值转换。所以,当我把-0.5 INT8 INT16或INT32,我收到1。然而,当我使用仿真软件中的数据类型转换块投-0.5 INT8, INT16或INT32,我收到0。金宝app我已经配置了数据类型转换块圆形的值到最近的整数值。我希望用MATLAB和Simulink的行为是相同的在执行相同的任务。金宝app

接受的答案

MathWorks支金宝app持团队
结果的差异当铸造INT8, INT16或INT32 MATLAB和Simulink是一个预期行为。金宝app舍入很有趣时,领带值如-0.5,0.5,1.5等等。
有三种常见的选择当舍入系:
1。最近的舍入圆远离零和关系
2。最近的有关联的舍入圆+∞
3所示。收敛的舍入
MATLAB是圆的,INT8 INT16 INT32功能实现(1)舍入与关系最近的舍入圆远离零。
金宝app仿真软件的模块提供4 - 5舍入模式的选择其中之一就是“最近”。这个选择实现圆角选项(2)与关系最近的舍入圆+∞。这是导致他们的行为的差异。
金宝app仿真软件对+∞的舍入行为关系是出于效率的代码生成过程中生成的代码。打破了领带远离零需要更多的主要操作(假设二进制补码整数)比打破领带+∞。
然而定点工具箱,横跨MATLAB和通过嵌入式仿真软件MATLAB块之间。金宝app定点工具箱提供了几个舍入选择包括(a) (b)的收敛。最近的选项(a)像仿真软件轮领带向+∞。金宝app收敛四舍五入是另一种类型的最近的舍入不同的领带断路器规则。收敛的舍入总是打破关系,甚至四舍五入到最近的价值。收敛舍入的目的是减少累积的数值总是打破在一个方向上的关系。
MATLAB打破关系在两个方向,但是所有积极的关系上,所有消极的关系,所以它有潜在的“漂移”如果计算集中在零。
许多DSP芯片收敛舍入支持硬件这不错的舍入行为没有大小或代码速度惩罚这些芯片。金宝app如果目标硬件不提供收敛舍入,然后有一个代码速度/大小处罚。
1评论
帕特里克•埃克
帕特里克•埃克 2014年4月14日
所以非常烦人。的 装天花板 地板上 函数的存在是有原因的。一个合适的演员会截断答案的行为……

登录置评。

更多的答案(0)

标签

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!