2

请任何人帮助我在matlab中将整数从实数截断到最接近的整数,例如:如果我有255/64 = 3.98,我只需要3而不是4。我在我的程序中使用了修复但不起作用。我的鳕鱼是:

S=imread('image0286.jpg')/64; 
   disp(fix(S);

这给了我在将 S 的元素四舍五入到最接近的整数后的输出,而不是削减整数。

4

2 回答 2

4

fix做你想做的事。

>>fix(255/64)
    ans =
          3

也许你的代码的其他部分没有做你认为它正在做的事情。您能否发布更多代码以及您的预期和实际输出

编辑: Imread 将值返回为 uint8,并且此类中的除法似乎执行了您不想要的舍入。尝试在除法之前重铸为 double

S = double(imread('image0286.jpg'))/64
于 2010-08-22T10:43:11.770 回答
0

floor(x)这样做,但要注意负数。

fix也应该工作。

另请注意,imread可能会返回byte数组或int数组而不是浮点数。所以你的部门可能是int-division,并自动截断而不需要fixor floor

于 2010-08-22T11:13:56.703 回答