下一个大于但不等于输入的整数
Next integer greater than but not equal to input
是否有类似于 ceil
的 (Matlab) 函数来查找下一个大于输入但 不等于 输入的整数?
示例:
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
的任何等价物?
对于正数 x:
floor(x)+1
没有例子,第二个问题有点模棱两可,但这可能是你要找的:
ceil(x)-1
如果你想同样对待负值和正值,例如 1.1
变成 2
而 -1.1
变成 1
,那么 using floor
是正确的:
out = floor(x)+1;
如果您希望正值成为第二大正整数,但负值成为第二大负整数,那么您可以使用fix
and sign
像这样:
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
是否有类似于 ceil
的 (Matlab) 函数来查找下一个大于输入但 不等于 输入的整数?
示例:
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
的任何等价物?
对于正数 x:
floor(x)+1
没有例子,第二个问题有点模棱两可,但这可能是你要找的:
ceil(x)-1
如果你想同样对待负值和正值,例如 1.1
变成 2
而 -1.1
变成 1
,那么 floor
是正确的:
out = floor(x)+1;
如果您希望正值成为第二大正整数,但负值成为第二大负整数,那么您可以使用fix
and sign
像这样:
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