Как сделать 1-D FFT, используя pycuda? - PullRequest
1 голос
/ 04 июня 2019

Привет. Я пытаюсь преобразовать 1D-FFT сигнал. Вот что я попробовал:

import numpy as np
from scipy.signal import hilbert, chirp

duration = 1.0
fs = 400.0
samples = int(fs*duration)
t = np.arange(samples) / fs
signal = chirp(t, 20.0, t[-1], 100.0)

import pycuda.autoinit
from pycuda import gpuarray
import numpy as np
from skcuda import fft

def fft_gpu1(signal):
  x_gpu = gpuarray.to_gpu(signal)
  x_hat = gpuarray.empty_like(x_gpu, dtype=np.complex64)
  plan = fft.Plan(x_gpu.shape,np.float32,np.complex64)
  fft.fft(x_gpu, x_hat, plan)
  return x_hat.get()

print(fft_gpu1(signal))

Тем не менее, результат, который я получаю:

[nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj
 nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj
 nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj
 nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj nan+nanj
...
  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j
  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j
  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j  0. +0.j]

Любая идея о том, почему я получаю эту проблему, будет принята с благодарностью

...