最近做课题,用Matlab遇到一个问题。见下方代码。
K>> 255^2
ans =
65025
K>> (Otsu_front_avg-Otsu_avg)
ans =
255
K>> (Otsu_front_avg-Otsu_avg)^2
ans =
255
可以发现,正常情况下使用255平方可以得出结果,但是当上述表达式的值为255的时候,平方后依然为255。百思不得其解。
后来找到原因是,表达式变量的值为uint8,而int8的最大值就是255,所以,即使对它再平方,结果还是255。
解决方法是,将变量转变为uint32,即可解决。使用函数:
K>> int32(Otsu_front_avg-Otsu_avg)^2
ans =
65025
以上。