我有一个变量 ,tauMax
我想四舍五入到最接近的十的幂(1、10、100、1000...)。我正在使用下面的表达式来查找最接近 tau 数组中最大值的整数。我正在找到最大值,因为我正在尝试计算应该是 x 轴截止值的十的幂。在这个原因中,tauMax 等于 756,所以我想要一个输出 1000 或 3(对于 10^3)的表达式。
tauMax = round(max(tau));
我真的很感激任何帮助!
由于您说的是以 10 为基数,因此您可以使用它log10
来获取位数。
怎么样:
>> ceil(log10(756))
ans =
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
您还可以查看内置 Matlab 函数 nextpow2(N) 的源代码(只需打开 nextpow2.m),了解 Mathworks 工程师如何将其实现为 2 的幂,并创建一个新函数将此源调整为 10 的幂.