快速傅里叶变换(Fast Fourier Transform, FFT)算法

傅里叶变换是一种数学工具,用于将信号从其原本的时间域或者空间域转换到频率域。对于连续时间信号,我们通常讨论的是傅里叶变换(Fourier Transform),而对于离散时间信号,则会使用离散傅里叶变换(Discrete Fourier Transform, DFT)。在实际应用中,快速傅里叶变换(Fast Fourier Transform, FFT)算法被广泛用来高效地计算DFT。

在Python中,我们可以使用numpy库来进行傅里叶变换,而matplotlib库则可以用来可视化结果。

下面是一个使用numpy.fft模块进行快速傅里叶变换的例子,我们将对一个简单的正弦波信号进行FFT,并展示其频谱。

import numpy as np
import matplotlib.pyplot as plt

# 设置采样率和时间长度
fs = 1000  # 采样频率
T = 1/fs   # 采样间隔
N = 1000   # 采样点数
t = np.linspace(0, N*T, N, endpoint=False)  # 时间向量

# 创建信号,假设是一个50Hz的正弦波
signal = np.sin(2 * np.pi * 50 * t) + 0.5 * np.sin(2 * np.pi * 120 * t)

# 计算傅里叶变换
yf = np.fft.fft(signal)
xf = np.fft.fftfreq(N, T)[:N//2]
yf = 2.0/N * np.abs(yf[:N//2])

# 绘制图形
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(t, signal)
plt.title('Original Signal')
plt.ylabel('Amplitude')

plt.subplot(2, 1, 2)
plt.plot(xf, yf)
plt.title('Magnitude of FFT')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')

plt.tight_layout()
plt.show()

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值