状況:整数ベースのマイクロコントローラがあり、加重平均(たとえば、31-1のような重み32)を計算し、それを配列に格納する必要があります。
最終的なコードは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;
しかし、これは私に誤った結果を与えるようであり、私は本当に実装に固執しています。
誰か、いくつかのアイデアがありますか?
編集
迅速な対応に感謝しますが、十分に明確な質問をしなかった可能性があります。以前の平均と現在のサンプルから必要な重みの係数があります。