2012-11-09 135 views
2

我正在研究計算矢量總能量的函數。計算總能量

從研究和另一個系統(在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」 值?

+0

又是什麼'累加()'做什麼? – SingerOfTheFall

+0

@SingerOfTheFall累積每個傳入的塊的值?例如。塊[0] ...........(累計)然後塊[1] ......等 – Phorce

+0

對不起,由於某種原因,我認爲這是你自己的功能 – SingerOfTheFall

回答

8

厚積薄發是下面的模板:

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

嘗試使用雙爲 '初始化':

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

你救了我的命,以及許多不眠之夜,因此,你是這一天的國王! :) 謝謝 – Phorce