2011-07-20 47 views
8

Tôi có một biến, tauMax, rằng tôi muốn làm tròn lên với công suất gần nhất là mười (1, 10, 100, 1000 ...). Tôi đang sử dụng biểu thức dưới đây để tìm số nguyên gần nhất với giá trị lớn nhất trong mảng tau. Tôi đang tìm giá trị tối đa bởi vì tôi đang cố gắng tính toán sức mạnh của mười mà nên được cắt x trục. Trong nguyên nhân này, tauMax bằng 756, vì vậy tôi muốn có một biểu thức xuất ra 1000 hoặc 3 (cho 10^3).Làm tròn đến sức mạnh của 10

tauMax = round(max(tau)); 

Tôi thực sự đánh giá cao sự trợ giúp nào!

+1

Bạn cũng có thể làm điều này tôi tin dựa trên số chữ số. – norway28

+0

Đó là một ý tưởng tuyệt vời. Bạn có biết tôi sẽ sử dụng lệnh nào để tìm số chữ số trong một số đã cho không? –

+0

@Alex Nichols - Vì bạn đang nói cơ sở 10, chỉ cần sử dụng 'log10' (xem câu trả lời của tôi bên dưới). –

Trả lời

23

Vì bạn đang nói cơ sở 10, bạn chỉ có thể sử dụng log10 để nhận số chữ số.

Làm thế nào về:

>> ceil(log10(756)) 

ans = 

    3 
+1

Đó là những gì tôi đã sử dụng, cảm ơn bạn! –

3

tôi không thực sự làm Matlab, nhưng theo cách thông thường để làm điều này trong bất kỳ ngôn ngữ tôi biết là: lấy cơ sở logarit 10, sau đó vòng lên con số đến số nguyên gần nhất, sau đó tính 10 cho lũy thừa của số đó. Trong Python:

def ceil_power_of_10(n): 
    exp = log(n, 10) 
    exp = ceil(exp) 
    return 10**exp 

>>> print(ceil_power_of_10(1024)) # prints 1000.0 
0

Bạn cũng có thể nhìn vào nguồn gốc của các built-in Matlab chức năng nextpow2 (N) (chỉ cần mở nextpow2.m) để xem cách MathWorks kỹ sư thực hiện điều này cho một sức mạnh của 2 và tạo ra một chức năng mới thích ứng với nguồn này với sức mạnh là 10.

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

Các vấn đề liên quan