快速傅里叶变换np.fft.fft的使用

本文详细介绍了如何使用np.fft.fft进行快速傅里叶变换,特别关注了默认操作维度和参数设置,避免常见错误。通过实例展示了正弦信号的FFT变换过程,包括频率点的计算方法和正确获取真实幅度的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

np.fft.fft进行快速傅里叶变换,需要特别注意的是,默认是对最后一个维度的数据进行fft变换,若你输入的是一维数组,请忽略后面,如果你是二维列矢量,如果不将数据变为行矢量或将axis参数设为0,将得到与输入相同的结果,导致后续的计算无缘无故出错。

二话不说,直接上代码,产生一个正弦信号,并对其进行fft变换,对应的频率点可通过np.fft.fftfreq计算得到,需要输入的两个参数分别是FFT的长度和采样时间间隔。

需要注意的是fft计算出来的幅度一般与真实的是不一样的,在ifft中会考虑这个因素,因此ifft恢复的信号与原来的信号是相同的。如果需要获得真实结果则需要乘以“2/FFT长度” 这个因子。

得到的频谱关于奈奎斯特频率对称,实际只需要取前一半的频谱信号即可。

import numpy as np
import matplotlib.pyplot as plt
# 产生正弦信号
Ts=0.001
t = Ts*np.array(range(10000))
x = np.sin(2*np.pi*325*t)

# FFT变换
X=np.fft.fft(x,np.size(x,0),axis=0)/x.size*2
freq=np.fft.fftfreq(np.size(x,0),Ts)

plt.figure(1)
plt.plot(t,x)
plt.show()
plt.figure(2)
plt.plot(freq,np.real(X))
plt.show()

                                                                             图1 原始信号

                                                                        图2 fft频谱图

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

txh3093

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值