如何在SciPy Python中执行离散傅里叶变换?
离散傅里叶变换(DFT)是一种数学技术,可将空间数据转换为频率数据。
快速傅里叶变换(FFT)是一种算法,用于计算空间数据的离散傅里叶变换。
空间数据通常采用多维数组的形式。 频率数据是指包含有关特定时间段内信号或波长数量的数据。
让我们看看如何使用“SciPy”库实现这个DFT。
该图形使用matplotlib库创建,数据使用NumPy库生成 –
更多Python相关文章,请阅读:Python 教程
示例
From matplotlib import pyplot as plt
import numpy as np
my_freq = 6
freq_samp = 70
time_val = np.linspace(0, 3, 3 * freq_samp, endpoint = False )
amp_val = np.sin(my_freq * 3 * np.pi * time_val)
figure, axis = plt.subplots()
axis.plot(time_val, amp_val)
axis.set_xlabel ('Time (in seconds)')
axis.set_ylabel ('Amplitude of signal')
plt.show()
from scipy import fftpack
A = fftpack.fft(amp_val)
frequency = fftpack.fftfreq(len(amp_val)) * freq_samp
figure, axis = plt.subplots()
axis.stem(frequency, np.abs(A))
axis.set_xlabel('Frequency in Hz')
axis.set_ylabel('Frequency Spectrum Magnitude')
axis.set_xlim(-freq_samp / 2, freq_samp/ 2)
axis.set_ylim(-7, 125)
plt.show()
输出
说明
- 所需软件包已导入。
- 使用Numpy库生成数据。
- 使用matplotlib库将此数据作为正弦波绘制到控制台。
- 接下来,使用“fftpack”包查找所生成数据的快速傅里叶变换。
- 再次将此数据绘制在图形上。