情况:我们有一个基于整数的微控制器,我们需要计算加权平均值(例如,权重 32,如 31-1),并将其存储在数组中。
最终代码将在 C 中。
(并且可以肯定的是,这不是家庭作业:))
我们正在考虑将模除法的结果与结果的权重(平均计算)一起存储,并在下一轮用作附加数据。
如果我们有浮动,它会是这样的:
avg[i] = ( avg[i-1] * (WEIGHT-1) + measured ) / WEIGHT;
既然我们没有,我在想:
pt = (mod == 0) ? WEIGHT-1 : WEIGHT-2;
tmp = avg[i-1] * pt + mod + measured;
avg[i] = tmp / WEIGHT;
mod = tmp % WEIGHT;
但这似乎给了我错误的结果,我真的坚持实施。
任何人,有一些想法?
编辑
非常感谢您的快速回复,尽管我可能没有问得足够清楚:我们从以前的平均值和当前样本中获得了所需权重的一个因素。