小编Ani*_*Ani的帖子

通过cuFFT在逆FFT中缩放

每当我绘制一个使用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)));    
Run Code Online (Sandbox Code Playgroud)

输入相同的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);
Run Code Online (Sandbox Code Playgroud)

cuFFT还执行1024批处理大小为的点FFT 2

使用的比例因子时NX=1024,值不正确。请告诉该怎么办。

matlab scaling cuda fft cufft

5
推荐指数
1
解决办法
1858
查看次数

标签 统计

cuda ×1

cufft ×1

fft ×1

matlab ×1

scaling ×1