用matlab实现实数与整数的转换
请大家帮我把整数从没有任何舍入的实数转换成matlab中最接近的整数,例如:如果我有255/64=3.98,我只需要3而不是4。我在程序中使用了fix,但没有工作。我的cod是:用matlab实现实数与整数的转换,matlab,numbers,cut,Matlab,Numbers,Cut,请大家帮我把整数从没有任何舍入的实数转换成matlab中最接近的整数,例如:如果我有255/64=3.98,我只需要3而不是4。我在程序中使用了fix,但没有工作。我的cod是: S=imread('image0286.jpg')/64; disp(fix(S); 这会在将S的元素舍入到最接近的整数后给出输出,而不是对整数进行切割。fix做您想要的事情 >>fix(255/64) ans = 3 也许你的代码的其他部分没有做你认为它正在做的事情
S=imread('image0286.jpg')/64;
disp(fix(S);
这会在将S的元素舍入到最接近的整数后给出输出,而不是对整数进行切割。
fix
做您想要的事情
>>fix(255/64)
ans =
3
也许你的代码的其他部分没有做你认为它正在做的事情。你能发布更多的代码和你的预期和实际输出吗
编辑:
Imread返回的值为uint8,这个类中的除法似乎执行了不需要的舍入操作。在分割之前尝试重铸双倍
S = double(imread('image0286.jpg'))/64
floor(x)
可以做到这一点,但要注意负数
但是,fix
也应该有效
还要注意,
imread
可能返回byte
数组或int
数组,而不是浮点数。因此,您的分割可能是整数分割,并自动截断,而无需fix
或floor
我需要将颜色空间从256减少到4,在读取图像后,我将图像分割为64。当我尝试计算颜色直方图时,我发现颜色是5而不是4,因为它四舍五入到最接近的整数。np。一定要考虑对你的问题进行良好的回答,因为这被认为是很好的礼仪。c、 f.@Jonas对你的问题发表评论。我在我的程序中尝试底部,并将其四舍五入到最接近的整数,请记住,我需要得到例如:3.1=3;3.2=3; 3.5=3; 3.7=3; 3.9=3如果是这种情况,说明你做错了什么。请向我们展示S(1,:)
的输出。也许这已经是四舍五入了。