jax.numpy.fft.rfftn#
- jax.numpy.fft.rfftn(a, s=None, axes=None, norm=None)[源代码][源代码]#
计算实值数组的多维离散傅里叶变换。
JAX 实现的
numpy.fft.rfftn()
。- 参数:
- 返回:
一个数组,包含沿轴
axes
除轴axes[-1]
之外的a
的多维离散傅里叶变换,其大小在s
中指定。沿轴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)