多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 频谱泄漏和hann窗 相关文档: [_频域信号处理_](frequency_process.html) 对于8kHz取样频率的200Hz 300Hz的叠加波形进行512点FFT计算其频谱,比较矩形窗和hann窗的频谱泄漏。 ``` # -*- coding: utf-8 -*- #用hann窗降低频谱泄漏 # import numpy as np import pylab as pl import scipy.signal as signal sampling_rate = 8000 fft_size = 512 t = np.arange(0, 1.0, 1.0/sampling_rate) x = np.sin(2*np.pi*200*t) + 2*np.sin(2*np.pi*300*t) xs = x[:fft_size] ys = xs * signal.hann(fft_size, sym=0) xf = np.fft.rfft(xs)/fft_size yf = np.fft.rfft(ys)/fft_size freqs = np.linspace(0, sampling_rate/2, fft_size/2+1) xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100)) yfp = 20*np.log10(np.clip(np.abs(yf), 1e-20, 1e100)) pl.figure(figsize=(8,4)) pl.title(u"200Hz和300Hz的波形和频谱") pl.plot(freqs, xfp, label=u"矩形窗") pl.plot(freqs, yfp, label=u"hann窗") pl.legend() pl.xlabel(u"频率(Hz)") a = pl.axes([.4, .2, .4, .4]) a.plot(freqs, xfp, label=u"矩形窗") a.plot(freqs, yfp, label=u"hann窗") a.set_xlim(100, 400) a.set_ylim(-40, 0) pl.show() ```