📜  Python| Numpy np.fftn() 方法(1)

📅  最后修改于: 2023-12-03 15:19:14.096000             🧑  作者: Mango

Python | Numpy np.fftn() 方法

Numpy是Python语言的一个扩展程序库,支持大量的高级数值操作和运算,其中包括FFT变换。np.fft.fftn()方法是Numpy库中的一个函数,用于执行n维快速傅里叶变换。

在本文中,我们将深入探讨 np.fft.fftn() 方法,讨论其语法、参数、功能以及使用时的示例。

语法

np.fft.fftn(a, s=None, axes=None, norm=None)

参数:

  • a :待计算变换的数组。
  • s :整数或整数元组,指定输出数组的形状。如果不指定,则形状与输入数组a相同。
  • axes:要计算傅里叶变换的轴。如果不指定,则计算所有轴。
  • norm:归一化数据,默认为None。

返回值:

一个与输入数组形状相同的ndarray数组。

功能

np.fft.fftn() 方法是np.fft模块中的一个函数,用于执行多维FFT变换。它可以计算一个n维输入数组的傅里叶变换,并返回与输入数组形状相同的ndarray数组。它与np.fft.fft()方法的功能类似,只是可以处理多维数组。

在计算傅里叶变换时,通常需要考虑正规化问题。np.fft.fftn()方法中有一个参数norm,可以用于控制这一点。默认情况下,norm为None,表示不进行归一化计算。如果设置norm为'ortho',则进行正规化计算,使得正向变换和反向变换之间的系数相同。

示例

现在让我们看一个使用np.fft.fftn()方法的例子。假设我们有一个形状为(2,2)的二维输入数组a:

import numpy as np

a = np.array([[1, 2], [3, 4]])

我们可以使用np.fft.fftn()方法对其进行傅里叶变换:

b = np.fft.fftn(a)

print(b)

输出:

[[10.+0.j -2.+0.j]
 [-2.+0.j  0.+0.j]]

我们也可以使用s参数来指定输出数组的形状:

b = np.fft.fftn(a, s=(4, 4))

print(b)

输出:

[[10.+0.j  2.+0.j  2.+0.j  2.+0.j]
 [ 0.+0.j -2.+0.j -2.+0.j -2.+0.j]
 [ 0.+0.j -2.+0.j -2.+0.j -2.+0.j]
 [ 0.+0.j -2.+0.j -2.+0.j -2.+0.j]]

我们可以看到,通过指定s参数,我们得到了一个更大的输出数组。在这里,输入数组a的形状为(2,2),而s参数指定了输出数组形状为(4,4)。

最后,我们可以使用norm参数来控制归一化计算:

b = np.fft.fftn(a, norm='ortho')

print(b)

输出:

[[ 5.  -1.5j]
 [-1.5 +0.5j]]

这里我们使用“ortho”选项进行归一化计算,得到了一个不同的输出结果。