Округление до степени 10 - PullRequest
10 голосов
/ 21 июля 2011

У меня есть переменная tauMax, которую я хочу округлить до до ближайшей степени десяти (1, 10, 100, 1000 ...). Я использую приведенное ниже выражение, чтобы найти ближайшее целое число к максимальному значению в массиве тау. Я нахожу максимальное значение, потому что я пытаюсь вычислить степень десяти, которая должна быть отсечкой оси X. В этом случае tauMax равен 756, поэтому я хочу иметь выражение, которое выводит либо 1000, либо 3 (для 10 ^ 3).

tauMax = round(max(tau));

Я бы очень признателен за любую помощь!

Ответы [ 3 ]

27 голосов
/ 21 июля 2011

Поскольку вы говорите с основанием 10, вы можете просто использовать log10 для получения количества цифр.

Как насчет:

>> ceil(log10(756))

ans =

     3
3 голосов
/ 21 июля 2011

Я на самом деле не делаю 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
0 голосов
/ 23 июля 2014

Вы также можете посмотреть на источник встроенной функции Matlab nextpow2 (N) (просто откройте nextpow2.m), чтобы увидеть, как инженеры Mathworks реализовали это для степени 2, и создать новую функцию, адаптирующую этот источник кмощность 10.

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

...