2011-11-17 74 views
-1

我有這個代碼(我從FFT開發的),它似乎沒事,根據Visual Studio ...但是,當它到達點[a] [b ]必須接收該值(即使它不是pow(),但只是expo_final),block [a] [b]的值不會根據我的預期進行。雙數組不接受雙值

來源是這裏。

void twiddle_factor(float *d_isub_matrix) 
{ 


    double block[THREAD_SIZE][THREAD_SIZE]; 
    float *d_osub_matrix = new float[THREAD_SIZE*THREAD_SIZE]; 
    int a,b,c,d,x,y,z; 


    float sum_sines=0.0; 
    double expo1,expo2,expo_final; 
    float sum_cosines=0.0; 
    float sum_sin[THREAD_SIZE][THREAD_SIZE],sum_cos[THREAD_SIZE][THREAD_SIZE]; 
    float angle=(2*PI)/THREAD_SIZE; 

    //put into shared memory the FFT calculation (F(u)) 

    for(x=0;x<THREAD_SIZE;x++) 
    { 
     for(y=0;y<THREAD_SIZE;y++) 
     { 

      for(z=0;z<THREAD_SIZE;z++) 
      { 
       sum_sines=sum_sines+sin(d_isub_matrix[y*THREAD_SIZE+z]*(angle*(2*z)))+sin(d_isub_matrix[y*THREAD_SIZE+z]*(angle*(2*z+1))); 
       sum_cosines=sum_cosines+cos(d_isub_matrix[y*THREAD_SIZE+z]*(angle*(2*z)))+cos(d_isub_matrix[y*THREAD_SIZE+z]*(angle*(2*z+1))); 

      } 
      sum_sin[x][y]=sum_sines/(2*THREAD_SIZE); 
      sum_cos[x][y]=sum_cosines/(2*THREAD_SIZE); 

     } 
    } 

    //getting the value! 

    for(a=0;a<THREAD_SIZE;a++) 
    { 
     for(b=0;b<THREAD_SIZE;a++) 
     { 
      expo1=exp(sum_sin[a][b]); 
      expo2=exp(sum_cos[a][b]); 
      expo_final=expo1+expo2; 
      block[a][b]=expo_final; 
     } 

    } 

其中ARRAY_SIZE和THREAD_SIZE定義和它們的值是64(ARRAY)和32(THREAD)。 我驗證了sum_sines,sum_cosines,sum_sin [] [],sum_cos [] [],角度,expo1,expo2和expo_final的值。直到最後一個,一切都很好。他們返回一些負面和正面的價值觀。 但我無法得到block [] []的值。任何人都知道發生了什麼事?

回答

4

這是你的問題:

for(b=0;b<THREAD_SIZE;a++) 
+0

呵呵謝謝完全缺乏關注o.O –