我有一个变量tauMax
,我想将向上舍入到最近的十次幂(1,10,100,1000 ......)。我使用下面的表达式来找到最接近tau数组中最大值的整数。我找到了最大值,因为我试图计算应该是x轴截止的10的幂。在这个原因中,tauMax等于756,所以我想要一个输出1000或3(10 ^ 3)的表达式。
tauMax = round(max(tau));
我真的很感激任何帮助!
答案 0 :(得分:26)
由于您正在使用基数10,因此您只需使用log10
来获取位数。
怎么样:
>> ceil(log10(756))
ans =
3
答案 1 :(得分:3)
我并不是真的做Matlab,但通常用我所知道的任何语言来做到这一点的方法是:取对数基数为10,然后将该数字向上舍入为最接近的整数,然后计算出10的幂数。在Python中:
from math import ceil, log
def ceil_power_of_10(n):
exp = log(n, 10)
exp = ceil(exp)
return 10**exp
>>> print(ceil_power_of_10(1024)) # prints 10000
答案 2 :(得分:0)
您还可以查看内置Matlab函数nextpow2(N)的源代码(只需打开nextpow2.m),了解Mathworks工程师如何以2的幂为单位实现此功能并创建一个新函数,使此源适应于10的力量。