Numpy vs Matlab浮动到uint8转换

时间:2018-03-07 11:44:35

标签: matlab numpy

根据Matlab的帮助,single值通过舍入转换为uint8,例如。

uint8(91.799999)

将返回我们92。

然而,numpy以下

np.uint8(91.799999)

将返回91。

有没有办法以这种或那种方式匹配这些行为?

由于

2 个答案:

答案 0 :(得分:2)

有两件事你必须注意:np.round与MATLAB中使用的不同舍入模式以及MATLAB转换也会剪切到范围[0,255],因为numpy溢出/下溢。让Numpy在MATLAB中模仿uint8强制转换:

np.uint8(np.clip(91.799999+0.5,0,255))

答案 1 :(得分:0)

Matlab的

Documentation精确地描述了如何转换为整数:

  

如果转换为整数的数字具有小数部分,则MATLAB将舍入为最接近的整数。如果小数部分恰好是0.5,那么从两个同样接近的整数中,MATLAB选择绝对值大小的那个

通过这个描述,你可以很容易地模仿python中的行为。