登录论坛

查看完整版本 : MATLAB除法... 29/29 /应该返回0吗?


poster
2019-12-10, 20:48
我真的不认为这是一个精度问题,答案应该是0.226。这是确切的代码:

val = I(i,j) bucketSize pos = val / bucketSize I只是从中获取价值的矩阵。这是MATLAB的输出:

val = 29 bucketSize = 128 pos = 0 我想念什么?



回答:

我的猜测是您的矩阵I是从图像文件 (https://www.mathworks.com/help/matlab/creating_plots/image-types.html)加载的像素数据,其值通常为无符号8位整数 (http://www.mathworks.com/help/matlab/ref/uint8.html) 。如前所述,将两个整数值都转换为双精度 (http://www.mathworks.com/help/matlab/ref/double.html)值将确保MATLAB执行浮点除法而不是整数除法(这将舍入结果)。

将一个值转换为双精度 (http://www.mathworks.com/help/matlab/ref/double.html)是不够的:

对于所有二元运算,其中一个操作数是整数数据类型的数组(64位整数除外),另一个是标量双精度数,MATLAB使用逐元素双精度算术计算该运算,然后将结果转换回原始值整数数据类型。

如果您想了解有关MATLAB中不同数值数据类型的更多信息,可以查阅本文档 (http://www.mathworks.com/help/matlab/numeric-types.html) 。



更多&回答... (https://stackoverflow.com/questions/3689575)