大家好,我现在想做一个3D数组的傅里叶变换,用cufft的库来做,我代码如下:
// 为3d数组分配空间,并赋值!
cufftComplex wf = (cufftComplex)malloc(L * M* N * sizeof(cufftComplex));
for( i = 0; i <= N ; i++)
{
for(j = 0; j <= M; j ++)
{
for(k = 0; k <= L; k ++)
{
fscanf(fp2, “%f \n” , &T);
if (i!= N && j != M && k != N)
wf[k + Mj + MNi].x = T;
wf[k + Mj + MNi].y = 0.0f;
}
}
}
// 想GPU拷贝数据,并进行傅里叶变换
int size = sizeof(cufftComplex)* L* M* N;
cufftHandle plan;
cudaMalloc((void**)&d_wf, size);
cudaMemcpy(d_wf, wf, size, cudaMemcpyHostToDevice);
cufftPlan3d(&plan, L, M, N, CUFFT_C2C);
cufftExecC2C(plan, d_wf, d_wf, CUFFT_FORWARD);
cudaMemcpy(as, d_wf, size, cudaMemcpyDeviceToHost);
cufftDestroy(plan);
cudaFree(d_wf) ;
运行完成后,结果全部是0,但是我数据肯定不是单频率的。哪位牛人帮我解决这个问题,谢谢!