2017-07-20 56 views
2

是否有(Matlab的)功能类似ceil去寻找下一个整数,它是大于输入,但不等于到输入?下一个整数大于但不等于输入

例子:

1.1 --> 2 
1.9 --> 2 
2.0 --> 3 (note that ceil(2) == 2) 
2.1 --> 3 

我试图与ceil(x+eps),但只适用于小的数字:

>> ceil((-4:4)+eps) 

ans = 

-4 -3 -1  0  1  2  2  3  4 

此外,任何等价物floor

回答

4

如果您想要处理负值和正值,使得1.1变为2-1.1变为1,th使用EN floorthe answer from informaton正确:

out = floor(x)+1; 

如果你宁愿有正面的价值观成为下一个最积极的整数,但负值成为未来最整数,那么你可以使用fixsign像这样:

out = fix(x)+sign(x); 

例如:

>> x = [-2.1 -2.0 -1.9 -1.1 0 1.1 1.9 2.0 2.1] 

x = 
    -2.1000 -2.0000 -1.9000 -1.1000   0 1.1000 1.9000 2.0000 2.1000 

>> out = fix(x)+sign(x) 

out = 
    -3 -3 -2 -2  0  2  2  3  3 
3

对于正数x:

floor(x)+1

第二个问题是没有例子有点暧昧,但是这可能是你在找什么:

ceil(x)-1

相关问题