代码之家  ›  专栏  ›  技术社区  ›  jakeva

MATLAB除法…29/128应该返回0吗?

  •  6
  • jakeva  · 技术社区  · 14 年前

    val = I(i,j)
    bucketSize    
    pos = val / bucketSize
    

    I 只是一个矩阵,我从中取值。以下是MATLAB的输出:

    val =
    
       29
    
    bucketSize =
    
       128
    
    pos =
    
       0
    

    我错过了什么?

    4 回复  |  直到 7 年前
        1
  •  17
  •   gnovice    7 年前

    I 像素数据是从 image file unsigned 8-bit integers . 如前所述,将两个整数值转换为 double precision

    将一个值转换为 双精度 不足:

    数据类型(64位整数除外),另一个是标量双精度, 算术,然后将结果转换回原始整数 数据类型。

    如果您想了解更多关于MATLAB中不同数值数据类型的信息,可以查看 this documentation .

        2
  •  11
  •   AmirW    14 年前

    double(val)/double(bucketSize)
    
        3
  •  1
  •   jakeva    14 年前

    我明白了,问题是我的矩阵因为某种原因包含了uint8,而不是double。刚刚把val=I(I,j)改成了val=double(I(I,j)),一切正常。谢谢。

        4
  •  0
  •   gary    14 年前

    这些变量可能是整数而不是双精度或长精度。1/2是否返回0.5?其他操作是否有效?