每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时,我都会得到相同形状的图形,并且最大值和最小值位于相同的点。然而,cuFFT 得到的值比 Matlab 得到的值大得多。 Matlab代码是
fs = 1000; % sample freq
D = [0:1:4]'; % pulse delay times
t = 0 : 1/fs : 4000/fs; % signal evaluation time
w = 0.5; % width of each pulse
yp = pulstran(t,D,'rectpuls',w);
filt = conj(fliplr(yp));
xx = fft(yp,1024).*fft(filt,1024);
xx = (abs(ifft(xx)));
具有相同输入的 CUDA 代码如下:
cufftExecC2C(plan, (cufftComplex *)d_signal, (cufftComplex *)d_signal, CUFFT_FORWARD);
cufftExecC2C(plan, (cufftComplex *)d_filter_signal, (cufftComplex *)d_filter_signal, CUFFT_FORWARD);
ComplexPointwiseMul<<<blocksPerGrid, threadsPerBlock>>>(d_signal, d_filter_signal, NX);
cufftExecC2C(plan, (cufftComplex *)d_signal, (cufftComplex *)d_signal, CUFFT_INVERSE);
cuFFT 还执行1024
点 FFT,批量大小为2
.
缩放因子为NX=1024
,值不正确。请告诉我该怎么做。