19

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

tauMax = round(max(tau));

我真的很感激任何帮助!

4

3 回答 3

41

由于您说的是以 10 为基数,因此您可以使用它log10来获取位数。

怎么样:

>> ceil(log10(756))

ans =

     3
于 2011-07-20T22:47:03.433 回答
7

我并没有真正使用 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
于 2011-07-20T22:47:09.133 回答
-2

您还可以查看内置 Matlab 函数 nextpow2(N) 的源代码(只需打开 nextpow2.m),了解 Mathworks 工程师如何将其实现为 2 的幂,并创建一个新函数将此源调整为 10 的幂.

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

于 2014-07-23T13:50:32.937 回答