mars.tensor.fft.ifftn#
- mars.tensor.fft.ifftn(a, s=None, axes=None, norm=None)[来源]#
计算N维逆离散傅里叶变换。
该函数通过快速傅里叶变换(FFT)计算任意数量轴上的M维张量的N维离散傅里叶变换的逆。换句话说,
ifftn(fftn(a)) == a在数值精度范围内。有关所使用的定义和约定的描述,参见 mt.fft。输入,与ifft类似,应按fftn返回的方式排序,即在所有轴的低阶角落中应包含零频率项,在所有轴的前半部分中应包含正频率项,在所有轴的中间包含奈奎斯特频率项,以及在所有轴的后半部分中应包含负频率项,按负频率递减的顺序排列。
- Parameters
a (array_like) – 输入张量,可以是复数。
s (序列 of 整型, 可选) – 输出的形状(每个变换轴的长度) (
s[0]指代轴 0,s[1]指代轴 1,等等)。 这对应于n在ifft(x, n)中。 沿任一轴,如果给定的形状小于输入的形状, 则输入被裁剪。如果形状大于输入,则输入用零填充。 如果 s 未给出,则使用由 axes 指定的轴上的输入形状。 有关 ifft 零填充的问题,请参见备注。axes (序列 of 整数, 可选) – 计算 IFFT 的轴。如果未提供,则使用最后
len(s)个轴,或者如果 s 也未指定,则使用所有轴。axes 中的重复索引意味着在该轴上进行多次逆变换。norm ({None, "ortho"}, 可选) – 归一化模式(见 mt.fft)。默认值为 None。
- Returns
out – 截断或零填充的输入,沿着由 axes 指示的轴进行变换,或者由上述参数部分解释的 s 或 a 的组合进行变换。
- Return type
复合张量
- Raises
ValueError – 如果s和axes的长度不同。
IndexError – 如果axes的某个元素大于a的轴数量。
另请参阅
备注
请参阅 mt.fft 以获取使用的定义和惯例。
零填充,类似于 ifft,是在指定维度上向输入附加零。尽管这是常见的做法,但可能会导致意外的结果。如果需要另一种形式的零填充,必须在调用 ifftn 之前进行。
示例
>>> import mars.tensor as mt
>>> a = mt.eye(4) >>> mt.fft.ifftn(mt.fft.fftn(a, axes=(0,)), axes=(1,)).execute() array([[ 1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j], [ 0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j], [ 0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j]])
创建并绘制具有带限频率内容的图像:
>>> import matplotlib.pyplot as plt >>> n = mt.zeros((200,200), dtype=complex) >>> n[60:80, 20:40] = mt.exp(1j*mt.random.uniform(0, 2*mt.pi, (20, 20))) >>> im = mt.fft.ifftn(n).real >>> plt.imshow(im.execute()) <matplotlib.image.AxesImage object at 0x...> >>> plt.show()