.. _cn_api_paddle_fft_hfftn:

hfftn
-------------------------------

.. py:function:: paddle.fft.hfftn(x, s=None, axes=None, norm="backward", name=None)

通过快速傅里叶变换（FFT）算法计算 N 维厄米特（Hermitian）傅里叶变换。


参数
:::::::::

- **x** (Tensor) - 输入数据，其数据类型为复数类型。
- **s** (Sequence[int]，可选) - 输出 Tensor 在每一个傅里叶变换轴上的长度（类似一维傅里
  叶变换中的参数 ``n``）。对于傅里叶变换的最后一个轴，输入长度要求是 ``s[-1]//2+1``，如果
  输入 Tensor 的长度大于 ``s[-1]//2+1``，输入 Tensor 会被截断。如果输入 Tensor 的长度
  小于 ``s[-1]//2+1``，则输入 Tensor 会被补零；

  - 对于傅里变换其他每一个轴 ``i``，如果输入 Tensor 的长度大于 ``s[i]``，输入 Tensor 会被截断。如果输入 Tensor 的长度小于 ``s[i]``，则输入 Tensor 会被补零；
  - 如果未指定 `s`，则 ``s`` 在最后一个傅里叶变换轴取值为 ``2*(m-1)``，其中 ``m`` 是输入 Tensor 在最后一个傅里叶变换轴的长度，其余轴为输入 Tensor 在该轴的长度。

- **axes** (Sequence[int]，可选) - 计算快速傅里叶变换的轴。如果没有指定，默认是使用最
  后 ``len(s)`` 个轴，如果 ``s`` 也没有指定则使用输入数据的全部的轴。
- **norm** (str，可选) - 指定傅里叶变换的缩放模式，缩放系数由变换的方向和模式同时决定。取
  值必须是 "forward"，"backward"，"ortho"之一，默认值为 "backward"。三种缩放模式对应的
  行为如下：

  - "backward"：正向和逆向变换的缩放系数分别为 ``1`` 和 ``1/n``；
  - "forward"：正向和逆向变换的缩放系数分别为 ``1/n`` 和 ``1``；
  - "ortho"：正向和逆向变换的缩放系数均为 ``1/sqrt(n)``；

  其中 ``n`` 为 ``s`` 中每个元素连乘。
- **name** (str，可选) - 具体用法请参见 :ref:`api_guide_Name`，一般无需设置，默认值为 None。


返回
:::::::::
Tensor，数据类型为实数。输入数据（可能被截断或者补零之后）在指定维度进行傅里叶变换的输出。
如果指定 ``s``，则输出 Tensor 在傅里叶变换维度的长度为 ``s``。否则输出 Tensor 在最后一个
傅里叶变换轴的长度为 ``2*(m-1)``，其中 ``m`` 是输入 Tensor 在最后一个傅里叶变换轴的长度，
其余轴为输入 Tensor 在对应轴的长度。

如果未指定 ``s``，则输出在最后一个傅里叶变换轴上的长度一定为偶数。

代码示例
:::::::::

COPY-FROM: paddle.fft.hfftn
