jax.numpy.fft.fftn#

jax.numpy.fft.fftn(a, s=None, axes=None, norm=None)[原始碼]#

沿給定軸計算多維離散傅立葉轉換。

JAX 實作的 numpy.fft.fftn()

參數:
  • a (ArrayLike) – 輸入陣列

  • s (Shape | None | None) – 整數序列。指定結果的形狀。如果未指定,則預設為 a 沿指定 axes 的形狀。

  • axes (Sequence[int] | None | None) – 整數序列,預設值=None。指定計算轉換的軸。

  • norm (str | None | None) – 字串。正規化模式。支援 “backward”、“ortho” 和 “forward”。

返回:

一個包含 a 的多維離散傅立葉轉換的陣列。

返回類型:

Array

另請參閱

範例

axes 參數為 None 時,jnp.fft.fftn 預設會沿所有軸計算轉換。

>>> x = jnp.array([[1, 2, 5, 6],
...                [4, 1, 3, 7],
...                [5, 9, 2, 1]])
>>> with jnp.printoptions(precision=2, suppress=True):
...   jnp.fft.fftn(x)
Array([[ 46.  +0.j  ,   0.  +2.j  ,  -6.  +0.j  ,   0.  -2.j  ],
       [ -2.  +1.73j,   6.12+6.73j,   0.  -1.73j, -18.12-3.27j],
       [ -2.  -1.73j, -18.12+3.27j,   0.  +1.73j,   6.12-6.73j]],      dtype=complex64)

s=[2] 時,沿 axis -1 的轉換維度將為 2,而沿其他軸的維度將與輸入相同。

>>> with jnp.printoptions(precision=2, suppress=True):
...   print(jax.numpy.fft.fftn(x, s=[2]))
[[ 3.+0.j -1.+0.j]
 [ 5.+0.j  3.+0.j]
 [14.+0.j -4.+0.j]]

s=[2]axes=[0] 時,沿 axis 0 的轉換維度將為 2,而沿其他軸的維度將與輸入相同。

>>> with jnp.printoptions(precision=2, suppress=True):
...   print(jax.numpy.fft.fftn(x, s=[2], axes=[0]))
[[ 5.+0.j  3.+0.j  8.+0.j 13.+0.j]
 [-3.+0.j  1.+0.j  2.+0.j -1.+0.j]]

s=[2, 3] 時,轉換的形狀將為 (2, 3)

>>> with jnp.printoptions(precision=2, suppress=True):
...   print(jax.numpy.fft.fftn(x, s=[2, 3]))
[[16. +0.j   -0.5+4.33j -0.5-4.33j]
 [ 0. +0.j   -4.5+0.87j -4.5-0.87j]]

jnp.fft.ifftn 可用於從 jnp.fft.fftn 的結果重建 x

>>> x_fftn = jnp.fft.fftn(x)
>>> jnp.allclose(x, jnp.fft.ifftn(x_fftn))
Array(True, dtype=bool)