计算总能量

时间:2012-11-09 12:09:02

标签: c++ audio vector matrix sum

我正在研究一个计算向量总能量的函数。

从研究和另一个系统(在MatLab中完成)中,方程式设定为每个向量求和的abs值。对于每个向量,向量总和的值是“0”,这里是代码:

vector<double> Audio::filter(vector<iniMatrix>&blocks, double sumThres, double ZeroThres)
{
   vector<double> totalEnergy;

   for(unsigned i=0; (i < blocks.size()); i++)
   {
      totalEnergy.push_back(abs(this->energy(blocks[i])));
   }

   for(unsigned i=0; (i < totalEnergy.size()); i++)
   {
      cout << totalEnergy[i] << endl;
   }

}

double Audio::energy(vector<double>&blocks)
{
    return accumulate(blocks.begin(), blocks.end(), 0);
}

有96个块,每个块包含600个值。这些值是双倍的:

0.0078125,0.0234375,0.015625

0.0078125,0.0234375,.....,

任何人都有任何想法为什么我为每个人得到“0”的价值?

1 个答案:

答案 0 :(得分:8)

累积是以下模板:

template <class InputIterator, class T>
T accumulate ( InputIterator first, InputIterator last, T init );

尝试使用double作为'init':

return accumulate(blocks.begin(), blocks.end(), 0.0);