jax.numpy.fft.rfftn#
- jax.numpy.fft.rfftn(a, s=None, axes=None, norm=None)[source]#
计算实值数组的多维离散傅里叶变换。
JAX 实现
numpy.fft.rfftn()
.- 参数:
a (ArrayLike) – 实值输入数组。
s (Shape | None | None) – 整数的可选序列。控制沿每个指定轴的输入的有效大小。如果未指定,则默认为输入沿
axes
的维度。axes (Sequence[int] | None | None) – 整数的可选序列,默认为 None。指定计算变换的轴。如果未指定,则沿最后
len(s)
个轴计算变换。如果既未指定axes
也未指定s
,则沿所有轴计算变换。norm (str | None | None) – 字符串,默认为“backward”。归一化模式。“backward”、“ortho”和“forward”受支持。
- 返回值:
包含
a
的多维离散傅里叶变换的数组,其大小由s
指定,沿着axes
指定的轴进行变换,除了axes[-1]
指定的轴。输出沿axes[-1]
轴的大小为s[-1]//2+1
。- 返回类型:
另请参阅
jax.numpy.fft.rfft()
: 计算实值数组的一维离散傅里叶变换。jax.numpy.fft.rfft2()
: 计算实值数组的二维离散傅里叶变换。jax.numpy.fft.irfftn()
: 计算实值多维逆离散傅里叶变换。
示例
>>> x = jnp.array([[[1, 3, 5], ... [2, 4, 6]], ... [[7, 9, 11], ... [8, 10, 12]]]) >>> with jnp.printoptions(precision=2, suppress=True): ... jnp.fft.rfftn(x) Array([[[ 78.+0.j , -12.+6.93j], [ -6.+0.j , 0.+0.j ]], [[-36.+0.j , 0.+0.j ], [ 0.+0.j , 0.+0.j ]]], dtype=complex64)
当
s=[3, 3, 4]
时,沿axes (-3, -2)
轴的变换大小为 (3, 3),沿axis -1
轴的大小为4//2+1 = 3
,其他轴的大小与输入相同。>>> with jnp.printoptions(precision=2, suppress=True): ... jnp.fft.rfftn(x, s=[3, 3, 4]) Array([[[ 78. +0.j , -16. -26.j , 26. +0.j ], [ 15. -36.37j, -16.12 +1.93j, 5. -12.12j], [ 15. +36.37j, 8.12-11.93j, 5. +12.12j]], [[ -7.5 -49.36j, -20.45 +9.43j, -2.5 -16.45j], [-25.5 -7.79j, -0.6 +11.96j, -8.5 -2.6j ], [ 19.5 -12.99j, -8.33 -6.5j , 6.5 -4.33j]], [[ -7.5 +49.36j, 12.45 -4.43j, -2.5 +16.45j], [ 19.5 +12.99j, 0.33 -6.5j , 6.5 +4.33j], [-25.5 +7.79j, 4.6 +5.04j, -8.5 +2.6j ]]], dtype=complex64)
当
s=[3, 5]
且axes=(0, 1)
时,沿axis 0
轴的变换大小为3
,沿axis 1
轴的大小为5//2+1 = 3
,其他轴的维度与输入相同。>>> with jnp.printoptions(precision=2, suppress=True): ... jnp.fft.rfftn(x, s=[3, 5], axes=[0, 1]) Array([[[ 18. +0.j , 26. +0.j , 34. +0.j ], [ 11.09 -9.51j, 16.33-13.31j, 21.56-17.12j], [ -0.09 -5.88j, 0.67 -8.23j, 1.44-10.58j]], [[ -4.5 -12.99j, -2.5 -16.45j, -0.5 -19.92j], [ -9.71 -6.3j , -10.05 -9.52j, -10.38-12.74j], [ -4.95 +0.72j, -5.78 -0.2j , -6.61 -1.12j]], [[ -4.5 +12.99j, -2.5 +16.45j, -0.5 +19.92j], [ 3.47+10.11j, 6.43+11.42j, 9.38+12.74j], [ 3.19 +1.63j, 4.4 +1.38j, 5.61 +1.12j]]], dtype=complex64)
对于一维输入
>>> x1 = jnp.array([1, 2, 3, 4]) >>> jnp.fft.rfftn(x1) Array([10.+0.j, -2.+2.j, -2.+0.j], dtype=complex64)