Here is the code that I am working with.:
unsigned int valueIndex = 0; //**the size of the array value[]
unsigned int n;//For fft
unsigned int k;//For fft
//Set sum for fft
double sumReal=0;
double sumImag=0;
double powSumReal;
double powSumImag;
double powSum;
float e; //value inside sin and cos when computing fft
const float pi = 3.14159; //Create pi constant
#define DELTA_SAMPLE_SIZE 125
double value[DELTA_SAMPLE_SIZE];
double z[DELTA_SAMPLE_SIZE];
for(n=0; n<valueIndex; n++){
for(k=0; k<valueIndex; k++){
e = -2.0*(pi/((float)valueIndex+1))*((float)n+1.0)*((float)k+1.0);
sumReal = sumReal + value[k]*cos(e);
sumImag = sumImag + value[k]*sin(e);
}
powSumReal = pow((float)sumReal,2.0);
powSumImag = pow((float)sumImag,2.0);
powSum = powSumReal+powSumImag;
z[n] = sqrt((float)powSum);
sumReal = 0; //Reset
sumImag = 0; //Reset
}
我知道它没有给出正确的结果,因为当我使用从MATLAB program中的值[]获取的原始值来执行相同的事情时,它给了我正确的结果。我怀疑它与我对不同变量的标记有关 - 我习惯于MATLAB,你不必指定它。有什么输入吗?
答案 0 :(得分:1)
valueIndex
初始化为零且从未更改,因此您的for()
循环不会执行任何迭代。
也许您打算使用n < DELTA_SAMPLE_SIZE
和k < DELTA_SAMPLE_SIZE
作为循环条件?在循环中使用valueIndex
看起来也很可疑,并且您的value[]
数组也永远不会填充值。
此外,您float
和double
的混合看起来很奇怪 - 您有没有理由不为所有浮点变量使用double
?