当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy fft.hfftn用法及代码示例


本文简要介绍 python 语言中 scipy.fft.hfftn 的用法。

用法:

scipy.fft.hfftn(x, s=None, axes=None, norm=None, overwrite_x=False, workers=None, *, plan=None)#

计算 Hermitian 对称复数输入的 N-D FFT,即具有实频谱的信号。

此函数通过快速傅里叶变换 (FFT) 计算 M-D 数组中任意数量轴上的 Hermitian 对称复数输入的 N-D 离散傅里叶变换。换句话说,ihfftn(hfftn(x, s)) == x 在数值精度范围内。 ( s 这里是 x.shapes[-1] = x.shape[-1] * 2 - 1 ,这是必要的,原因与 x.shape irfft 是必需的相同。)

参数

x array_like

输入数组。

s 整数序列,可选

输出的形状(每个变换轴的长度)(s[0]指轴 0,s[1]到轴 1 等)。s也是沿该轴使用的输入点数,最后一个轴除外,其中s[-1]//2+1使用输入点。沿着任何轴,如果形状由s小于输入的,输入被裁剪。如果它更大,则用零填充输入。如果s如果未给出,则使用沿轴指定的轴的输入形状。除了最后一个轴被认为是2*(m-1)其中m是输入沿该轴的长度。

axes 整数序列,可选

计算逆 FFT 的轴。如果未给出,则使用最后一个 len(s) 个轴,如果也未指定 s,则使用所有轴。

norm {“backward”, “ortho”, “forward”},可选

标准化模式(参见 fft )。默认为“backward”。

overwrite_x 布尔型,可选

如果为真,则内容x可以销毁;默认为假。看scipy.fft.fft更多细节。

workers 整数,可选

用于并行计算的最大工作线程数。如果为负,则该值从 os.cpu_count() 环绕。有关详细信息,请参阅 fft

plan 对象,可选

此参数保留用于传递下游 FFT 供应商提供的预先计算的计划。它目前未在 SciPy 中使用。

返回

out ndarray

截断或补零的输入,沿由,或通过组合s或者x,如上面的参数部分所述。每个变换轴的长度由对应的元素给出s,或者除了最后一个轴之外的每个轴的输入长度,如果s没有给出。在最终转换的轴中,输出的长度是s没有给出是2*(m-1)其中m是输入的最终变换轴的长度。要在最终轴上获得奇数个输出点,s必须指定。

抛出

ValueError

如果 s 和轴有不同的长度。

IndexError

如果轴的某个元素大于 x 的轴数。

注意

对于一维信号 x 具有实频谱,它必须满足 Hermitian 属性:

x[i] == np.conj(x[-i]) for all i

通过依次反映每个轴,这可以推广到更高的维度:

x[i, j, k, ...] == np.conj(x[-i, -j, -k, ...]) for all i, j, k, ...

这不应与 Hermitian 矩阵相混淆,后者的转置是它自己的共轭:

x[i, j] == np.conj(x[j, i]) for all i, j

s 的默认值假定最终转换轴上的输出长度为偶数。在执行最终复数到实数的变换时,厄米对称性要求沿该轴的最后一个虚数分量必须为 0,因此它被忽略。为了避免丢失信息,必须给出真实输入的正确长度。

例子

>>> import scipy.fft
>>> import numpy as np
>>> x = np.ones((3, 2, 2))
>>> scipy.fft.hfftn(x)
array([[[12.,  0.],
        [ 0.,  0.]],
       [[ 0.,  0.],
        [ 0.,  0.]],
       [[ 0.,  0.],
        [ 0.,  0.]]])

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.fft.hfftn。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。