信号の総エネルギーを計算するために、次の式が与えられました。
Ex= ∑ n|x[n]|2
これは、各ブロックを二乗してから、ブロック全体の合計を取得することをお勧めします。私が書いたコード/アルゴリズムがこの式に対して正確であるかどうか疑問に思っており、最も効率的な方法でそれを行いました。
double totalEnergy(vector<double> data, const int rows, const int cols)
{
vector<double> temp;
double energy = 0;
for(int i=0; (i < 2); i++)
{
for(int j=0; (j < 2); j++)
{
temp.push_back( (data[i*2+j]*data[i*2+j]) );
}
}
energy = accumulate (temp.begin(), temp.begin()+(rows*cols), 0);
return energy;
}
int main(int argc, char *argv[]) {
vector<double> data;
data.push_back(4);
data.push_back(4);
data.push_back(4);
data.push_back(4);
totalEnergy(data, 2, 2);
}
結果: 64
どんな助け/アドバイスも大歓迎です:)!