详解Numpy fft()(快速傅里叶变换)函数的作用与使用方法

Numpy fft()函数是对一维或者二维的数组进行快速傅里叶变换(FFT),其函数原型为:numpy.fft.fft(a, n=None, axis=-1, norm=None),参数含义如下:

  • a:接受一个实数组或复数数组
  • n:可选项,表示傅里叶变换的长度,如果不指定则默认为a的长度
  • axis:可选参数,表示进行傅里叶变换的轴,默认情况下,对于一维的数组,进行傅里叶变换的轴为最后一个,对于二维的数组,进行傅里叶变换的轴为第二个
  • norm:可选项,表示归一化的方式,如果为None则不归一化,如果是"ortho",表示按照奥斯特洛夫方式(Ostrogradsky)归一化

经过快速傅里叶变换后,可以得到原始信号在频域上的分解,进而用于信号处理、滤波、谱分析等诸多应用。

下面我们通过两个例子来说明numpy.fft.fft()的使用方法。

例子1

我们通过一个简单的例子来说明如何使用numpy.fft.fft()计算一个一维数组的傅里叶变换,并绘制出原始信号与频谱图。

import numpy as np
import matplotlib.pyplot as plt

#生成一个长度为256的实数组
x = np.linspace(0, 2*np.pi, 256)
y = np.sin(x) + 0.5*np.sin(3*x) + 0.2*np.sin(5*x)

#计算傅里叶变换
y_fft = np.fft.fft(y)

#计算相应的频率
freq = np.fft.fftfreq(len(y), x[1] - x[0])

#绘制原始信号
plt.subplot(211)
plt.plot(x, y)

#绘制频谱图
plt.subplot(212)
plt.plot(freq, np.abs(y_fft))

plt.show()

运行上述代码,得到的结果如下图所示:

fft_example_1.png

从图中可以看出,原始信号是由三个正弦波叠加而成,绿色的曲线表示频谱图,横轴表示频率,纵轴表示幅值,蓝色线条显示了频谱中的主要频率成分。

例子2

我们称计算一个二维数组的傅里叶变换,并绘制出原始图像与频谱图。

import numpy as np
import matplotlib.pyplot as plt

# 生成一个二维数组作为示例数据
data = np.random.random((256, 256))

# 计算二维傅里叶变换
fft = np.fft.fft2(data)

# 计算频谱图
magnitude_spectrum = 20 * np.log(np.abs(fft))

# 绘制原始图像和频谱图
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.imshow(data, cmap='gray')
ax1.set_title('Original Image')
ax2.imshow(magnitude_spectrum, cmap='gray')
ax2.set_title('Magnitude Spectrum')
plt.show()

解释一下代码:

首先,我们使用Numpy的random函数生成一个256x256的随机数组,作为示例数据。

然后,我们使用fft2函数计算二维傅里叶变换。这个函数返回一个与输入数组相同大小的数组,其中包含了复数的傅里叶系数。

接下来,我们计算频谱图。这里使用了Numpy的abs函数计算复数的模,然后使用log函数取对数,并乘以20,以得到更好的可视化效果。

最后,我们使用Matplotlib绘制出原始图像和频谱图。imshow函数用于显示图像,其中cmap='gray'参数指定了灰度颜色映射。set_title函数用于设置图像的标题。我们使用subplots函数创建一个包含两个子图的图像,并将它们分别赋值给ax1和ax2变量。最后,我们调用show函数显示图像。

运行上述代码,得到的结果如下图所示:

fft_example_2

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Numpy fft()(快速傅里叶变换)函数的作用与使用方法 - Python技术站

(7)
上一篇 2023年3月22日
下一篇 2023年3月22日

相关文章

  • 详解Numpy argsort()(返回数组排序后的索引)函数的作用与使用方法

    Numpy argsort() 是一个非常常用的函数,用于返回数组排序后的索引值。 使用方法 numpy.argsort(a, axis=-1, kind=None, order=None) 参数说明 a:需要排序的数组。 axis:沿着哪个轴排序,默认为最后一个维度。 kind:排序算法类型,可以为‘quicksort’, ‘mergesort’, ‘he…

    Numpy函数大全 2023年3月22日
    00
  • 详解Numpy corrcoef()(计算相关系数矩阵)函数的作用与使用方法

    Numpy corrcoef()函数是用来计算两个数组之间的相关系数矩阵的。它是NumPy中一个重要且常用的函数,可以用于数据处理、统计学和机器学习等领域中。 corrcoef()函数的基本语法如下: numpy.corrcoef(x, y=None, rowvar=True, bias=<no value>, ddof=<no value…

    Numpy函数大全 2023年3月22日
    00
  • 详解Numpy allclose()(判断数组是否在误差范围内相等)函数的作用与使用方法

    Numpy allclose()函数是用于比较两个数组是否非常接近的函数。它将比较两个数组的每个元素,如果两个元素差的绝对值小于或等于某个特定的容忍度,则它们被认为是相等的。 接下来我们来了解allclose()的具体使用。 语法格式 allclose()函数的语法格式为: numpy.allclose(a, b, rtol=1e-05, atol=1e-0…

    Numpy函数大全 2023年3月22日
    00
  • 详解Numpy any()(判断元素是否存在)函数的作用与使用方法

    Numpy any()函数的作用是检查数组中是否存在任何一个元素满足给定的条件,如果存在,则返回True,否则返回False。其使用方法如下: numpy.any(a, axis=None, out=None, keepdims=’no value’) 其中,参数a表示待检查的数组,axis表示对数组进行计算的轴,out表示输出结果的数组,keepdims表…

    Numpy函数大全 2023年3月22日
    00
  • 详解Numpy prod()(返回数组元素的乘积)函数的作用与使用方法

    简介 Numpy(NumPy官网)是Python中用于数值计算的重要库之一。其中,Prod()方法用于计算数组元素的乘积。在本文中,我们将深入探讨Numpy Prod()的作用与使用方法,包括其语法、参数、返回值等等。 Prod()语法 Prod()函数的语法如下: numpy.prod(a, axis=None, dtype=None, keepdims=…

    Numpy函数大全 2023年3月22日
    00
  • 详解Numpy array()数组函数的作用与使用方法

    Numpy array()是一种用于创建多维数组的函数。它可以接受多种数据类型,支持数组枚举、切片等操作,是数据分析、科学计算以及机器学习中非常基础且重要的工具。在实际应用中,既可以通过手动创建数据进行实例化,也可以通过读取外部数据文件等方式创建。 下面将详细讲解它的作用以及使用方法。 作用 创建多维数组:将列表、元组等序列类型数据转换成多维数组。 数组的计…

    Numpy函数大全 2023年3月22日
    00
  • 详解Numpy var()(返回数组元素的方差)函数的作用与使用方法

    Numpy var()函数的作用是计算数组中元素的方差。方差是用来衡量数据分散程度的指标,具体来说是每个数据点与平均数之差的平方和的平均数,量度了取值分散程度的一个重要指标。 下面给出Numpy var()函数的具体用法及两个实例说明。 使用方法: numpy.var(arr, axis=None, dtype=None, out=None, ddof=0,…

    Numpy函数大全 2023年3月22日
    00
  • 详解Numpy isnan()(判断元素是否为NaN)函数的作用与使用方法

    numpy.isnan()函数用于判断一个数组中的元素是否为NaN(not a number)。NaN是一个特殊的浮点数,用于表示不可能的数值,例如0/0、∞/∞等。 函数语法为: numpy.isnan(x) 其中,x为待判断的数组。 函数返回一个布尔型数组,其中True表示对应的元素是NaN,False表示对应的元素不是NaN。 示例1:判断数组中元素是…

    Numpy函数大全 2023年3月22日
    00
合作推广
合作推广
分享本页
返回顶部