四舍五入到10的力量

时间:2011-07-20 22:41:48

标签: matlab rounding logging exponent

我有一个变量tauMax,我想将向上舍入到最近的十次幂(1,10,100,1000 ......)。我使用下面的表达式来找到最接近tau数组中最大值的整数。我找到了最大值,因为我试图计算应该是x轴截止的10的幂。在这个原因中,tauMax等于756,所以我想要一个输出1000或3(10 ^ 3)的表达式。

tauMax = round(max(tau));

我真的很感激任何帮助!

3 个答案:

答案 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的力量。

http://www.mathworks.it/it/help/matlab/ref/nextpow2.html