scipy.fftpack.

rfft#

scipy.fftpack.rfft(x, n=None, axis=-1, overwrite_x=False)[source]#

实数序列的离散傅里叶变换。

参数:
xarray_like,实数

要变换的数据。

nint,可选

定义傅里叶变换的长度。如果未指定n(默认值),则n = x.shape[axis]。如果n < x.shape[axis],则截断x;如果n > x.shape[axis],则用零填充x

axisint,可选

应用变换的轴。默认值为最后一个轴。

overwrite_xbool,可选

如果设置为 True,则可以覆盖x 的内容。默认值为 False。

返回值:
zreal ndarray

返回的实数数组包含

[y(0),Re(y(1)),Im(y(1)),...,Re(y(n/2))]              if n is even
[y(0),Re(y(1)),Im(y(1)),...,Re(y(n/2)),Im(y(n/2))]   if n is odd

其中

y(j) = sum[k=0..n-1] x[k] * exp(-sqrt(-1)*j*k*2*pi/n)
j = 0..n-1

注释

在数值精度范围内,y == rfft(irfft(y))

实现了单精度和双精度例程。半精度输入将转换为单精度。非浮点输入将转换为双精度。不支持长双精度输入。

若要获取具有复数数据类型的输出,请考虑使用较新的函数 scipy.fft.rfft

示例

>>> from scipy.fftpack import fft, rfft
>>> a = [9, -9, 1, 3]
>>> fft(a)
array([  4. +0.j,   8.+12.j,  16. +0.j,   8.-12.j])
>>> rfft(a)
array([  4.,   8.,  12.,  16.])