-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