cupyx.scipy.fftpack.get_fft_plan#

cupyx.scipy.fftpack.get_fft_plan(a, shape=None, axes=None, value_type='C2C')[源码]#

生成用于转换最多三个轴的 CUDA FFT 计划。

参数:
  • a (cupy.ndarray) – 要转换的数组,假定为 C-contiguous 或 F-contiguous。

  • shape (None整数元组) – 输出中已转换轴的形状。如果未给出 shape,则使用输入沿 axes 指定轴的长度。

  • axes (Noneintint 元组) –

    要转换数组的轴。如果为 None,则假定所有轴都被转换。

    目前,对于执行 N 维转换,这些轴必须是最多三个相邻轴的集合,并且必须包含数组的第一个或最后一个轴。

  • value_type (str) –

    要执行的 FFT 类型。可接受的值包括

    • ’C2C’:复数到复数转换(默认)

    • ’R2C’:实数到复数转换

    • ’C2R’:复数到实数转换

返回值:

一个用于一维转换 (cupy.cuda.cufft.Plan1d) 或 N 维转换 (cupy.cuda.cufft.PlanNd) 的 cuFFT 计划。

注意

返回的计划不仅可以作为 cupyx.scipy.fftpack 中函数的参数之一传递,还可以用作 cupy.fftcupyx.scipy.fftpack 函数的上下文管理器。

x = cupy.random.random(16).reshape(4, 4).astype(complex)
plan = cupyx.scipy.fftpack.get_fft_plan(x)
with plan:
    y = cupy.fft.fftn(x)
    # alternatively:
    y = cupyx.scipy.fftpack.fftn(x)  # no explicit plan is given!
# alternatively:
y = cupyx.scipy.fftpack.fftn(x, plan=plan)  # pass plan explicitly

在第一种情况下,即使设置了 cupy.fft.config.enable_nd_planning = True,也不会自动生成 cuFFT 计划。

注意

如果在 set_cufft_callbacks() 的上下文中使用此函数,则生成的计划将启用回调。

警告

此 API 与 SciPy 的存在差异,目前是实验性的,未来版本中可能会发生更改。