本文实例为大家分享了python傅里叶变换FFT绘制频谱图的具体代码,供大家参考,具体内容如下
频谱图的横轴表示的是 频率, 纵轴表示的是振幅
#coding=gbk
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#依据快速傅里叶算法得到信号的频域
def test_fft():
sampling_rate = 8000 #采样率
fft_size = 8000 #FFT长度
t = np.arange(0, 1.0, 1.0/sampling_rate)
x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t)+ 3*np.sin(2*np.pi*200*t)
xs = x[:fft_size]
xf = np.fft.rfft(xs) / fft_size #返回fft_size/2+1 个频率
freqs = np.linspace(0, sampling_rate/2, fft_size/2+1) #表示频率
xfp = np.abs(xf) * 2 #代表信号的幅值,即振幅
plt.figure(num='original', figsize=(15, 6))
plt.plot(x[:100])
plt.figure(figsize=(8,4))
plt.subplot(211)
plt.plot(t[:fft_size], xs)
plt.xlabel(u"时间(秒)", fontproperties='FangSong')
plt.title(u"156.25Hz和234.375Hz的波形和频谱", fontproperties='FangSong')
plt.subplot(212)
plt.plot(freqs, xfp)
plt.xlabel(u"频率(Hz)", fontproperties='FangSong')
plt.ylabel(u'幅值', fontproperties='FangSong')
plt.subplots_adjust(hspace=0.4)
plt.show()
test_fft()
# np.clip(a, a_mi