Arrondir à une puissance de 10

j'ai une variable tauMax, que je veux ronde à la puissance la plus proche de dix(1, 10, 100, 1000...). J'utilise l'expression ci-dessous pour trouver l'entier le plus proche de la valeur max dans le tableau tau. Je trouve la valeur max parce que j'essaie de calculer la puissance de dix qui devrait être la coupure de l'axe des X. Dans cette cause, tauMax est égal à 756, donc je veux avoir une expression qui produit soit 1000, soit 3(pour 10^3).

tauMax = round(max(tau));

j'apprécierais vraiment toute aide!

8
demandé sur Bill the Lizard 2011-07-21 02:41:47

3 réponses

log10 pour obtenir le nombre de chiffres.

Que Diriez-vous de:

>> ceil(log10(756))

ans =

     3
25
répondu b3. 2012-01-31 22:12:56

Je ne fais pas vraiment Matlab, mais la façon habituelle de le faire dans n'importe quelle langue que je connais est: prendre le logarithme base 10, puis arrondir ce nombre à l'entier le plus proche, puis calculer 10 à la puissance de ce nombre. En 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
3
répondu steveha 2018-08-17 05:39:33

vous pouvez aussi regarder la source de la fonction intégrée de Matlab nextpow2 (N) (ouvrez simplement nextpow2.m) voir comment les ingénieurs de Mathworks ont implémenté ceci pour une puissance de 2 et créer une nouvelle fonction adaptant cette source à une puissance de 10.

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

0
répondu Hermann 2014-07-23 13:50:32