不确定是否正确分配float,int,double

时间:2013-06-17 23:28:19

标签: c arduino fft

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,你不必指定它。有什么输入吗?

1 个答案:

答案 0 :(得分:1)

valueIndex初始化为零且从未更改,因此您的for()循环不会执行任何迭代。

也许您打算使用n < DELTA_SAMPLE_SIZEk < DELTA_SAMPLE_SIZE作为循环条件?在循环中使用valueIndex看起来也很可疑,并且您的value[]数组也永远不会填充值。

此外,您floatdouble的混合看起来很奇怪 - 您有没有理由不为所有浮点变量使用double