对于高度= 17,宽度= 11(图像A)的给定图像,
以下陈述是否相同?
在Matlab中: halfHeight = round(17/2); (答案= 9)
在C ++中: int halfHeight = ceil(17/2); (答案= 9)
对于像素访问,我如何确定我正在访问正确的像素值?
答案 0 :(得分:1)
如果您进行计算:
17/2=8.5
ceil(x)
将计算最接近的整数,该整数大于x
round(x)
将计算最接近的整数。但是,8
和9
都与8.5
接近。所以惯例是在这种情况下它等于9
。
同样round(1.5)=2
,round(2.5)=3
答案 1 :(得分:0)
从答案Where is Round() in C++?,我们可以回答这个问题。
然而,在Matlab中它也有明确的定义。 从Mathworks http://www.mathworks.com/help/techdoc/ref/round.html,我们可以看到
Y = round(X)将X的元素舍入到最接近的整数。小数部分为0.5的正元素向上舍入到最接近的正整数。具有-0.5的小数部分的负元素向下舍入到最接近的负整数。对于复数X,虚部和实部都是独立舍入的。
当然,我们可以看到
B = ceil(A)将A的元素四舍五入到大于或等于A的最接近的整数。对于复数A,虚部和实部被独立舍入。
http://www.mathworks.com/help/techdoc/ref/ceil.html
然后我们可以很容易地知道为什么round(8.5)= 9和ceil(8.5)= 9。