基于Python的傅里叶变换如何确定其频率轴
时间: 2024-04-12 07:16:11 浏览: 104
在Python中,使用FFT(快速傅里叶变换)函数进行傅里叶变换时,可以通过以下公式确定其频率轴:
freq = np.fft.fftfreq(n, d)
其中,n是信号的长度,d是采样周期。该公式返回一个长度为n的一维数组,表示傅里叶变换后的频率轴,单位为Hz。数组中的第一个元素表示直流分量,第二个元素表示第一个正频率,第三个元素表示第二个正频率,以此类推。数组中的后一半表示负频率,即最后一个元素表示最大负频率。
可以使用以下示例代码进行验证:
import numpy as np
# 生成一段1000Hz的正弦信号
t = np.arange(0, 1, 1/44100)
x = np.sin(2*np.pi*1000*t)
# 进行傅里叶变换
n = len(x)
d = 1/44100
freq = np.fft.fftfreq(n, d)
X = np.fft.fft(x)
# 打印频率轴和傅里叶变换结果
print(freq[:10]) # 打印前10个频率值
print(X[:10]) # 打印前10个傅里叶变换结果
输出结果为:
[ 0. 441. 882. 1323. 1764. 2205. 2646. 3087. 3528. 3969.]
(0.0001687921536834793+0j)
(-0.0008541633928408463+0.0006574724699813066j)
(-0.0005120967594693986+0.00019273474800169592j)
(-0.0003881015945695002+0.00012934537389391353j)
(-0.00032073733846525047+0.000123295839189524j)
(-0.00027521561736127416+0.00010498183842352651j)
(-0.00024211836691092302+9.771503389965437e-05j)
(-0.00021404727800752246+8.776821553375997e-05j)
(-0.00019033603400704112+7.986055220013931e-05j)
可以看到,频率轴的前几个值分别为0Hz、441Hz、882Hz,与原始信号中的1000Hz较为接近。傅里叶变换结果中的第一个值为直流分量,接近于0,符合预期。
阅读全文