mars.tensor.fft.rfft#

mars.tensor.fft.rfft(a, n=None, axis=-1, norm=None)[来源]#

计算实数输入的一维离散傅里叶变换。

该函数通过一种高效算法称为快速傅里叶变换(FFT)计算实值数组的一维n点离散傅里叶变换(DFT)。

Parameters
  • a (array_like) – 输入张量

  • n (int, 可选) – 在输入中沿变换轴使用的点数。 如果 n 小于输入的长度,则输入被裁剪。 如果大于,则输入用零填充。如果没有提供 n, 则沿 axis 指定的轴使用输入的长度。

  • axis (int, 可选) – 用于计算FFT的轴。如果未给出,则使用最后一个轴。

  • norm ({None, "ortho"}, 可选) – 归一化模式(见 mt.fft)。默认值为 None。

Returns

out – 被截断或零填充的输入,沿着axis指示的轴进行变换,如果未指定axis,则沿最后一个轴进行变换。如果n是偶数,变换轴的长度为(n/2)+1。如果n是奇数,长度为(n+1)/2

Return type

复合张量

Raises

IndexError – 如果 axis 大于 a 的最后一个轴。

另请参阅

mt.fft

有关DFT的定义和使用的约定。

irfft

rfft的逆变换。

fft

一般(复数)输入的一维FFT。

fftn

n维快速傅里叶变换。

rfftn

实输入的n维FFT。

备注

当对纯实输入计算DFT时,输出是厄米对称的,即负频率项只是相应正频率项的复共轭,因此负频率项是多余的。该函数不计算负频率项,因此输出的变换轴的长度为 n//2 + 1

A = rfft(a) 且 fs 是采样频率时, A[0] 包含零频率项 0*fs,由于厄米对称性,这是实数。

如果 n 是偶数, A[-1] 包含表示正负Nyquist频率(+fs/2和-fs/2)的项,并且必须是纯实数。如果 n 是奇数,fs/2处没有项; A[-1] 包含最大正频率(fs/2*(n-1)/n),在一般情况下是复数。

如果输入 a 包含虚部,它将被静默丢弃。

示例

>>> import mars.tensor as mt
>>> mt.fft.fft([0, 1, 0, 0]).execute()
array([ 1.+0.j,  0.-1.j, -1.+0.j,  0.+1.j])
>>> mt.fft.rfft([0, 1, 0, 0]).execute()
array([ 1.+0.j,  0.-1.j, -1.+0.j])

请注意,fft 输出的最后一个元素是第二个元素的复共轭,对于实数输入。对于rfft,这种对称性被利用来仅计算非负频率项。