-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 [] []的值。任何人都知道發生了什麼事?
呵呵謝謝完全缺乏關注o.O –