下一个大于但不等于输入的整数

Lau*_*enz 3 matlab ceil

是否有一个(Matlab)函数类似于ceil查找下一个大于输入但不等于输入的整数?

例子:

1.1 --> 2
1.9 --> 2
2.0 --> 3    (note that ceil(2) == 2)
2.1 --> 3
Run Code Online (Sandbox Code Playgroud)

我尝试过ceil(x+eps),但这只适用于少量:

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

ans =

-4    -3    -1     0     1     2     2     3     4
Run Code Online (Sandbox Code Playgroud)

另外,任何等效项floor?

gno*_*ice 5

如果您想以同样的方式对待负值和正值,例如1.1变为2和-1.1变为1,那么使用信息得到的答案floor是正确的:

out = floor(x)+1;
Run Code Online (Sandbox Code Playgroud)

如果您希望正值成为下一个最正整数,但负值成为下一个最负整数,那么您可以使用fix和 ,sign如下所示:

out = fix(x)+sign(x);
Run Code Online (Sandbox Code Playgroud)

例如:

>> 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
Run Code Online (Sandbox Code Playgroud)