maxframe.tensor.fft.ifft#
- maxframe.tensor.fft.ifft(a, n=None, axis=-1, norm=None)[源代码]#
计算一维离散傅里叶逆变换。
此函数计算由 fft 计算的一维 n 点离散傅里叶变换的逆变换。换句话说,
ifft(fft(a)) == a在数值精度范围内成立。有关算法和定义的一般描述,请参见 mt.fft。输入应按照 fft 返回的顺序排列,即:
a[0]应包含零频率项,a[1:n//2]应包含正频率项,a[n//2 + 1:]应包含负频率项,按从最负频率开始递增的顺序排列。
对于偶数个输入点,
A[n//2]表示正负奈奎斯特频率处的值之和,因为这两个频率混叠在一起。详见 numpy.fft。- 参数:
- 返回:
out -- 经过截断或补零的输入,沿 axis 指定的轴进行变换;如果未指定 axis,则沿最后一个轴变换。
- 返回类型:
complex Tensor
- 抛出:
IndexError -- 如果 axes 大于 a 的最后一个轴。
备注
如果输入参数 n 大于输入大小,则在输入末尾补零。虽然这是常见的做法,但可能导致令人意外的结果。如果需要不同的填充方式,必须在调用 ifft 之前完成。
示例
>>> import maxframe.tensor as mt
>>> mt.fft.ifft([0, 4, 0, 0]).execute() array([ 1.+0.j, 0.+1.j, -1.+0.j, 0.-1.j])
创建并绘制一个具有随机相位的带限信号:
>>> import matplotlib.pyplot as plt >>> t = mt.arange(400) >>> n = mt.zeros((400,), dtype=complex) >>> n[40:60] = mt.exp(1j*mt.random.uniform(0, 2*mt.pi, (20,))) >>> s = mt.fft.ifft(n) >>> plt.plot(t.execute(), s.real.execute(), 'b-', t.execute(), s.imag.execute(), 'r--') ... >>> plt.legend(('real', 'imaginary')) ... >>> plt.show()