python如何求fft

原创
admin 11小时前 阅读数 4 #Python

Python中进行FFT(Fast Fourier Transform)操作的常用库是numpy,以下是一个简单的示例,演示如何使用numpy进行FFT操作:

import numpy as np
import matplotlib.pyplot as plt
生成时间序列信号
fs = 100  # 采样频率
t = np.arange(0, 1, 1/fs)  # 时间轴
f1, f2 = 5, 50  # 信号频率
x = np.sin(2*np.pi*f1*t) + 0.5*np.sin(2*np.pi*f2*t)
进行FFT操作
n = len(x)  # 信号长度
k = np.arange(n)  # FFT后的频率轴
T = n/fs  # 总时间
frq = k/T  # 当前时间对应的频率
X = np.fft.fft(x)  # FFT变换
绘制时域和频域信号
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.plot(t, x)
plt.title('Time Domain')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.subplot(1, 2, 2)
plt.plot(frq[:n//2], abs(X[:n//2]))  # 绘制正频率部分
plt.title('Frequency Domain')
plt.xlabel('Frequency [Hz]')
plt.ylabel('Amplitude')
plt.show()

上述代码首先生成了一个包含两个正弦波的时间序列信号,然后使用numpy.fft.fft函数对信号进行FFT操作,最后绘制了时域和频域信号,在频域信号中,只绘制了正频率部分,因为FFT是对称的,负频率部分和正频率部分是对称的。

需要注意的是,FFT操作是一个线性操作,即满足叠加性,也就是说,如果一个信号可以由多个正弦波叠加而成,那么对每个正弦波分别进行FFT操作,然后再将结果叠加起来,得到的FFT结果是一样的,在实际应用中,可以根据信号的特点选择合适的FFT库和函数进行计算。

作者文章
热门
最新文章