-2
我有問題需要幫助關於C++功能的第一個電話
平滑指數平滑後的一個輸入表現不同遵循如下等式:
newValue = inputSignal*smoothFactor + (1-smoothFactor)*oldValue
我的函數應該只有一個輸入參數,那就是inputSignal
參數(smoothFactor
可以在函數內聲明並且不是問題的主題)和一個輸出參數,即newValue
。
現在我遇到的問題是,第一次計算缺少oldValue
,因爲在第一次函數調用中oldValue
是前面的newValue
。
所以oldValue
必須等於第一個函數調用中的第一個inputSignal
。
這意味着我的函數在第一次調用時需要表現不同於以後的每次調用。如果我聲明全局參數i=0
並在第一次調用後計數爲i++
,則可以解決此問題。然而,這不是一個獨立於外部環境的功能,它應該是。
我能夠解決i=0
和i++
全局變量的問題,但沒有找到解決方法。
較大的代碼示例將在這裏幫助 – Niall 2014-10-10 07:06:50
變成一個實用工具類。你的函數有內部狀態(oldValue,可能是本地靜態?),這通常是一個壞主意。然後,您可以在班級中增加一個額外的布爾成員來檢測第一個電話。此外,只需返回newValue而不是將其作爲輸出參數。 – heinrichj 2014-10-10 07:15:32