jax.numpy.fft.hfft#
- jax.numpy.fft.hfft(a, n=None, axis=-1, norm=None)[源代码][源代码]#
计算具有厄米特对称性的数组的 1-D FFT。
JAX 实现的
numpy.fft.hfft()
。- 参数:
- 返回:
一个实数值数组,包含通过利用其固有的厄米对称性对
a
进行一维离散傅里叶变换的结果,沿axis
方向的维度为n
。- 返回类型:
参见
jax.numpy.fft.ihfft()
: 计算具有厄米特对称性的数组的一维逆FFT。jax.numpy.fft.fft()
: 计算一维离散傅里叶变换。jax.numpy.fft.rfft()
: 计算实值输入的一维离散傅里叶变换。
示例
>>> x = jnp.array([[1, 3, 5, 7], ... [2, 4, 6, 8]]) >>> jnp.fft.hfft(x) Array([[24., -8., 0., -2., 0., -8.], [30., -8., 0., -2., 0., -8.]], dtype=float32)
此值等于使用
jnp.fft.fft
计算的以下数组x1
的离散傅里叶变换的实部。>>> x1 = jnp.array([[1, 3, 5, 7, 5, 3], ... [2, 4, 6, 8, 6, 4]]) >>> jnp.fft.fft(x1) Array([[24.+0.j, -8.+0.j, 0.+0.j, -2.+0.j, 0.+0.j, -8.+0.j], [30.+0.j, -8.+0.j, 0.+0.j, -2.+0.j, 0.+0.j, -8.+0.j]], dtype=complex64) >>> jnp.allclose(jnp.fft.hfft(x), jnp.fft.fft(x1)) Array(True, dtype=bool)
要从
jnp.fft.hfft
获得奇数长度的输出,必须将n
指定为奇数值,因为默认行为会在指定的axis
上产生偶数长度的结果。>>> with jnp.printoptions(precision=2, suppress=True): ... print(jnp.fft.hfft(x, n=5)) [[17. -5.24 -0.76 -0.76 -5.24] [22. -5.24 -0.76 -0.76 -5.24]]
当
n=3
且axis=0
时,沿axis 0
的变换维度将为3
,而沿其他轴的维度将与输入相同。>>> jnp.fft.hfft(x, n=3, axis=0) Array([[ 5., 11., 17., 23.], [-1., -1., -1., -1.], [-1., -1., -1., -1.]], dtype=float32)
x
可以使用jnp.fft.ihfft
从jnp.fft.hfft
的结果中重建(但数据类型复杂),仅当n
指定为2*(m-1)``(如果 `m` 是偶数)或 ``2*m-1``(如果 `m` 是奇数)时,其中 ``m
是沿axis
的输入维度。>>> jnp.fft.ihfft(jnp.fft.hfft(x, 2*(x.shape[-1]-1))) Array([[1.+0.j, 3.+0.j, 5.+0.j, 7.+0.j], [2.+0.j, 4.+0.j, 6.+0.j, 8.+0.j]], dtype=complex64) >>> jnp.allclose(x, jnp.fft.ihfft(jnp.fft.hfft(x, 2*(x.shape[-1]-1)))) Array(True, dtype=bool)
对于复数输入:
>>> x2 = jnp.array([[1+2j, 3-4j, 5+6j], ... [2-3j, 4+5j, 6-7j]]) >>> jnp.fft.hfft(x2) Array([[ 12., -12., 0., 4.], [ 16., 6., 0., -14.]], dtype=float32)