jax.numpy.fft.irfftn

内容

jax.numpy.fft.irfftn#

jax.numpy.fft.irfftn(a, s=None, axes=None, norm=None)[source]#

计算实值多维逆离散傅里叶变换。

JAX 实现 numpy.fft.irfftn().

参数:
  • a (ArrayLike) – 输入数组。

  • s (Shape | None | None) – 可选的整数序列。指定每个指定轴上的输出大小。如果没有指定,则沿轴 axes[-1] 的输出维度为 2*(m-1)m 是沿轴 axes[-1] 的输入大小,其他轴的维度将与输入相同。

  • axes (Sequence[int] | None | None) – 可选的整数序列,默认值为 None。指定沿其计算变换的轴。如果没有指定,则沿最后 len(s) 个轴计算变换。如果既没有指定 axes 也没有指定 s,则沿所有轴计算变换。

  • norm (str | None | None) – 字符串,默认值为“backward”。归一化模式。“backward”、“ortho”和“forward”受支持。

返回值:

包含 a 的多维逆离散傅里叶变换的实值数组,大小为 s,沿指定的 axes,其他轴与输入相同。

返回类型:

数组

另请参见

示例

jnp.fft.irfftn 默认计算沿所有轴的变换。

>>> x = jnp.array([[[1, 3, 5],
...                 [2, 4, 6]],
...                [[7, 9, 11],
...                 [8, 10, 12]]])
>>> jnp.fft.irfftn(x)
Array([[[ 6.5, -1. ,  0. , -1. ],
        [-0.5,  0. ,  0. ,  0. ]],

       [[-3. ,  0. ,  0. ,  0. ],
        [ 0. ,  0. ,  0. ,  0. ]]], dtype=float32)

s=[3, 4] 时,沿 axes (-2, -1) 的变换大小将为 (3, 4),其他轴的大小将与输入相同。

>>> with jnp.printoptions(precision=2, suppress=True):
...   jnp.fft.irfftn(x, s=[3, 4])
Array([[[ 2.33, -0.67,  0.  , -0.67],
        [ 0.33, -0.74,  0.  ,  0.41],
        [ 0.33,  0.41,  0.  , -0.74]],

       [[ 6.33, -0.67,  0.  , -0.67],
        [ 1.33, -1.61,  0.  ,  1.28],
        [ 1.33,  1.28,  0.  , -1.61]]], dtype=float32)

s=[3]axes=[0] 时,沿 axes 0 的变换大小将为 3,其他轴的维度将与输入相同。

>>> with jnp.printoptions(precision=2, suppress=True):
...   jnp.fft.irfftn(x, s=[3], axes=[0])
Array([[[ 5.,  7.,  9.],
        [ 6.,  8., 10.]],

       [[-2., -2., -2.],
        [-2., -2., -2.]],

       [[-2., -2., -2.],
        [-2., -2., -2.]]], dtype=float32)