移動平均を計算するはずの関数から QVector を返そうとしています。私の質問は、関数をより効率的にする方法です。数学は問題ありませんが、QVector を返す際に何か間違ったことをしたのではないかと思っています。これが私がこれまでに持っているコードです:
QVector<double> moving_exponential_average(const QVector<double>& a, double lambda) {
if(lambda <0 ) {
lambda = 0;
}
if(lambda >1) {
lambda = 1;
}
QVector<double> b;
b.reserve(a.size());
b.append(a[0]);
double l_inv = 1-lambda;
for(unsigned int i = 1; i < a.size(); ++i) {
b.append(a[i]*lambda+l_inv*b[i-1]);
}
return b;
}
デフォルト コンストラクターを使用して、QVector がデフォルト値を設定しないようにします。はるかに遅いサイズ変更で同じことを試しました。これを最適化する方法について何か提案はありますか?
よろしく