jax.scipy.fft.idctn

目录

jax.scipy.fft.idctn#

jax.scipy.fft.idctn(x, type=2, s=None, axes=None, norm=None)[源代码][源代码]#

计算输入的多维逆离散余弦变换

JAX 实现的 scipy.fft.idctn()

参数:
  • x (Array) – 数组

  • type (int) – 整数,默认值 = 2。目前仅支持类型 2。

  • s (Sequence[int] | None) – 整数或整数序列。指定结果的形状。如果未指定,它将默认为 x 沿指定 axes 的形状。

  • axes (Sequence[int] | None) – 整数或整数序列。指定将沿其计算变换的轴。

  • norm (str | None) – 字符串。归一化模式:可以是 [None, "backward", "ortho"] 之一。默认是 None,相当于 "backward"

返回:

包含 x 的逆离散余弦变换的数组

返回类型:

Array

参见

示例

jax.scipy.fft.idctn 默认情况下,当 axes 参数为 None 时,会沿着两个轴计算变换。

>>> x = jax.random.normal(jax.random.key(0), (3, 3))
>>> with jnp.printoptions(precision=2, suppress=True):
...    print(jax.scipy.fft.idctn(x))
[[-0.03 -0.08 -0.08]
 [ 0.05  0.12 -0.09]
 [-0.02 -0.04  0.08]]

s=[2] 时,沿 axis 0 的变换维度将是 2,而沿 axis 1 的维度将与输入的维度相同。

>>> with jnp.printoptions(precision=2, suppress=True):
...  print(jax.scipy.fft.idctn(x, s=[2]))
[[-0.01 -0.03 -0.14]
 [ 0.    0.03  0.06]]

s=[2]axes=[1] 时,沿 axis 1 的变换维度将为 2,而沿 axis 0 的维度将与输入相同。此外,当 axes=[1] 时,变换将仅沿 axis 1 计算。

>>> with jnp.printoptions(precision=2, suppress=True):
...  print(jax.scipy.fft.idctn(x, s=[2], axes=[1]))
[[ 0.   -0.19]
 [-0.03 -0.34]
 [-0.38  0.04]]

s=[2, 4] 时,变换的形状将是 (2, 4)

>>> with jnp.printoptions(precision=2, suppress=True):
...  print(jax.scipy.fft.idctn(x, s=[2, 4]))
[[-0.01 -0.01 -0.05 -0.11]
 [ 0.    0.01  0.03  0.04]]

jax.scipy.fft.idctn 可以用来从 jax.scipy.fft.dctn 的结果中重建 x

>>> x_dctn = jax.scipy.fft.dctn(x)
>>> jnp.allclose(x, jax.scipy.fft.idctn(x_dctn))
Array(True, dtype=bool)