前言
GNU Radio 中 FFT 模块的窗函数包括以下几种:矩形窗(Rectangular Window)、汉明窗(Hamming Window)、汉宁窗(Hann Window)、黑曼窗(Blackman Window)、黑曼-哈里斯窗(Blackman-Harris Window)、凯泽窗(Kaiser Window)、巴特利特窗(Bartlett Window)、平顶窗(Flattop Window),本文对窗函数实现的结果做一个记录对比。
一、grc 图
首先我们先创建一个简单的 grc 图,将信号源变成标签流通过限流器后再分两路,一路接给示波器1和频谱仪1,另一路通过 FFT 再进行归一化后再送给 IFFT 然后送给示波器2,我们主要考察的是使用不同窗函数所带来的信号变化。
二、窗函数及对应的运行结果
1、矩形窗
- 特点:所有样本的权重相等。
- 适用场景:矩形窗在时域内保持信号不变,但由于其突然的起止点,会在频域内产生显著的旁瓣。适合用于长度固定且非周期性信号的简单场景,不推荐用于精确的频谱分析。
对 FFT 模块和 IFFT 模块均做如下修改:
window.rectangular(fft_len)
运行结果如下:
①、时域对比:
使用矩形窗后,原信号经过 FFT 和 IFFT 可以复原原信号。
②、频谱对比:
2、汉明窗
- 特点:比汉宁窗旁瓣稍高,主瓣稍窄。
- 适用场景:由于其相对较低的旁瓣,适用于需要减少旁瓣而又不过分担心频率分辨率的信号处理任务,如语音处理和生物信号分析。
对 FFT 模块和 IFFT 模块均做如下修改:
window.hamming(fft_len)
运行结果如下:
①、时域对比:
使用汉明窗后,原信号经过 FFT 和 IFFT 不可以复原原信号。
②、频谱对比:
3、汉宁窗
- 特点:提供良好的频率分辨率和较低的旁瓣。
- 适用场景:广泛用于频谱分析和滤波器设计,尤其是在音频处理和振动分析中,其中频率分辨率和旁瓣抑制都很重要。
对 FFT 模块和 IFFT 模块均做如下修改:
window.hann(fft_len)
运行结果如下:
①、时域对比:
使用汉宁窗后,原信号经过 FFT 和 IFFT 不可以复原原信号。
②、频谱对比:
4、黑曼窗
- 特点:旁瓣更低,主瓣更宽。
- 适用场景:适用于需要极低旁瓣的场合,如雷达和无线通信中的信号分析,适合于旁瓣对性能影响较大的应用。
对 FFT 模块和 IFFT 模块均做如下修改:
window.blackman(fft_len)
运行结果如下:
①、时域对比:
使用黑曼窗后,原信号经过 FFT 和 IFFT 不可以复原原信号。
②、频谱对比:
5、黑曼-哈里斯窗
- 特点:提供极低的旁瓣。
- 适用场景:适合于旁瓣必须被严格控制的高精度频谱分析,如精确测量和科学研究,常用于天文学和精密测量领域。
对 FFT 模块和 IFFT 模块均做如下修改:
window.blackman_harris(fft_len)
运行结果如下:
①、时域对比:
使用黑曼-哈里斯窗后,原信号经过 FFT 和 IFFT 不可以复原原信号。
②、频谱对比:
6、凯泽窗
- 特点:通过参数 beta 调节,可以在主瓣宽度和旁瓣高度之间进行权衡。
- 适用场景:因其灵活性,广泛应用于数字滤波器设计和调制应用,特别是在需要定制窗函数以满足特定主瓣宽度和旁瓣衰减需求的场合。
对 FFT 模块和 IFFT 模块均做如下修改:
window.kaiser(fft_len, 7)
运行结果如下:
①、时域对比:
使用凯泽窗后,原信号经过 FFT 和 IFFT 不可以复原原信号。
②、频谱对比:
7、巴特利特窗
- 特点:三角形状,两端为零,有助于减少频谱泄漏。
- 适用场景:适合于需要平滑处理但不需要极端旁瓣抑制的应用,如在音频和语音信号处理中平滑时间序列数据。
对 FFT 模块和 IFFT 模块均做如下修改:
window.bartlett(fft_len)
运行结果如下:
①、时域对比:
使用巴特利特窗后,原信号经过 FFT 和 IFFT 不可以复原原信号。
②、频谱:
8、平顶窗
- 特点:在主瓣顶部非常平坦,可以非常精确地测量幅度,但频率分辨率较低。
- 适用场景:常用于校准和测量应用,尤其是在需要高精度幅度测量而不是频率分辨率的场合。
对 FFT 模块和 IFFT 模块均做如下修改:
window.flattop(fft_len)
运行结果如下:
①、时域对比:
使用平顶窗后,原信号经过 FFT 和 IFFT 不可以复原原信号。
②、频谱对比:
我的qq:2442391036,欢迎交流!