【问题标题】:Calculating total energy计算总能量
【发布时间】:2012-11-09 12:09:01
【问题描述】:

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

通过研究和另一个系统(在 MatLab 中完成),方程组得出了它对每个向量求和的绝对值。每个向量的向量求和的值为“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”值有任何想法吗?

【问题讨论】:

  • accumulate() 是做什么的?
  • @SingerOfTheFall 会累积传入的每个块的值吗?例如。 blocks[0] ......(累积)然后 block[1] ......等等
  • 抱歉,不知为何我以为是你自己的函数

标签: c++ audio vector matrix sum


【解决方案1】:

积累是以下模板:

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

尝试使用 double 作为 'init':

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

【讨论】:

  • 你救了我的命,而且,许多不眠之夜,所以,你是白天的王者! :) 谢谢
猜你喜欢
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多