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

yizhihongxing

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技术站

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

相关文章

  • 详解Numpy array()数组函数的作用与使用方法

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

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

    Numpy cov()是一个用于计算协方差矩阵的函数。协方差矩阵是一个描述随机变量之间关系的矩阵,通常用于统计学和机器学习中的数据分析。 本文将介绍Numpy cov()的作用与使用方法,并提供两个实例详细说明。 作用 将数据集X的协方差矩阵进行计算,然后返回该矩阵。协方差矩阵描述了变量之间的关系、方向和强度。除此之外,协方差矩阵还可用于数据降维、找到数据集…

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

    Numpy中的cross()函数是用于计算两个向量的叉积,也可以计算两个矩阵的行叉积或列叉积。在数学中,叉积通常用于描述两个向量的垂直关系,返回的向量与这两个向量都垂直。 使用方法 numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None) 参数说明: a:第一个向量; b:第二个向量; axisa和…

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

    reshape()函数作用 Numpy中的reshape()函数用于将数组的维度重新设置,这个函数的目的是调整数组的形状,而不是改变原数组中的任何数值。该函数返回一个新数组,该数组与原数组共享数据,但在调整维度时会创建新的数组。 使用方法 Numpy的reshape()函数可以以几种不同的方式使用。如果要将原数组调整为一个新的形状,可以使用以下语法: num…

    Numpy函数大全 2023年3月22日
    00
  • 详解Numpy irfft()(实部快速傅里叶逆变换)函数的作用与使用方法

    Numpy的irfft()函数是用于计算一维实数逆快速傅里叶(inverse Fast Fourier Transform,iFFT)的函数,即将频域信号还原为时域信号。现在,我们将为您介绍此函数的作用和使用方法。 irfft()函数的语法如下: numpy.irfft(a, n=None, axis=-1, norm=None) 其中,参数a是一维傅里叶变…

    2023年3月22日
    00
  • 详解Numpy hanning()(汉宁窗口函数)的作用与使用方法

    Numpy的hanning()是一个用于生成汉宁窗的函数,该函数返回一个长度为N的数组,其中每个元素的值都是按照汉宁窗公式计算出来的。 汉宁窗通常用于信号处理中,可以将信号分段处理,消除信号的周期性干扰,提高分析信号的精度。在音频分析、图像处理、频谱分析等领域都有广泛的应用。 下面是hanning()函数的用法及示例。 语法:numpy.hanning(M)…

    2023年3月22日
    00
  • 详解Numpy fill()(用指定值填充数组)函数的作用与使用方法

    Numpy fill()函数的作用是用指定的值填充数组或矩阵。 使用方法如下: numpy.fill(arr, value, start=None, end=None) 其中,arr是需要被填充的数组或矩阵,value是填充的值,start和end是填充范围的起始和结束位置,可选参数。 如果start和end都不指定,则将整个数组或矩阵都填充为value的值…

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

    Numpy mean()函数是Numpy库中的一个用于求平均值的函数,可以计算Numpy数组中所有元素的平均值。 使用方法 使用Numpy库,首先需要导入库: import numpy as np numpy.mean()函数的语法格式如下: numpy.mean(a, axis=None, dtype=None, out=None, keepdims=&l…

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