我有一個超聲波ping傳感器從Python獲取輸出。這讀數是在Python中的最後三個項目
while True:
所以,顯然永遠不會停止。
該數據被設置爲一個名爲'ping_out'的變種。我需要從ping_out得到最後三個讀數,並對它們進行平均,以便得到一個名爲ping_average的變量。我怎樣才能做到這一點?
謝謝!
我有一個超聲波ping傳感器從Python獲取輸出。這讀數是在Python中的最後三個項目
while True:
所以,顯然永遠不會停止。
該數據被設置爲一個名爲'ping_out'的變種。我需要從ping_out得到最後三個讀數,並對它們進行平均,以便得到一個名爲ping_average的變量。我怎樣才能做到這一點?
謝謝!
使用長度3 deque對象:
from collections import deque
last3 = deque(maxlen=3)
while True:
last3.append(this_ping) # <-- insert your ping here, of course
avg = sum(last3)/len(last3)
print avg
不錯。我的一部分想要預先優化這個'len(last3)'位,因爲你只需要調用它最多三次。 – kojiro
我想知道你的優化會被優化的開銷否定多少:) – mhlester
非常感謝你的出色答案,並且非常快速的回覆!!!!!也感謝你@David試圖:)不幸的是,這裏的每個人都有可笑的快速打字;) – developius
您可以顯示設置 'ping_out' 的代碼?一個長度爲3的隊列似乎是適當的數據結構。 –
相關:http://stackoverflow.com/questions/11352047/finding-moving-average-from-data-points-in-python – kojiro
ping_out = timepasssed * 17000. Timepass是發送脈衝和恢復之間的時間。 – developius