0 概览

学习信号时域和频域、快速傅立叶变换(FFT)、加窗,以及如何通过这些操作来加深对信号的认识。

1. 理解时域、频域、FFT

傅立叶变换有助于理解常见的信号,以及如何辨别信号中的错误。 尽管傅立叶变换是一个复杂的数学函数,但是通过一个测量信号来理解傅立叶变换的概念并不复杂。 从根本上说,傅立叶变换将一个信号分解为不同幅值和频率的正弦波。 我们继续来分析这句话的意义所在。
所有信号都是若干正弦波的和
我们通常把一个实际信号看作是根据时间变化的电压值。 这是从时域的角度来观察信号。 傅立叶定律指出,任意波形在时域中都可以由若干个正弦波和余弦波的加权和来表示。 例如,有两个正弦波,其中一个的频率是另一个的3倍。 将两个正弦波相加,就得到了一个不同的信号。



图1 两个信号相加,得到一个新的信号

假设第二号波形幅值也是第一个波形的1/3。 此时,只有波峰受影响。



图2 信号相加时调整幅值影响波峰
假加上一个幅值和频率只有原信号1/5的信号。 按这种方式一直加,直到触碰到噪声边界,您可能会认出结果波形。


图3 方波是若干正弦波的和
您创建了一个方波。 通过这种方法,所有时域中的信号都可表示为一组正弦波。

即使可以通过这种方法构造信号,那意味着什么呢? 因为可以通过正弦波构造信号,同理也可以将信号分解为正弦波。 一旦信号被分解,可查看和分析原信号中不同频率的信号。 请参考信号分解的下列使用实例:

  • 分解广播信号,可选择要收听的特定频率(电台)。
  • 将声频信号分解为不同频率的信号(例如,低音、高音),可增强特定频段,移除噪声。
  • 根据速度和强度分解地震波形,可优化楼宇设计,避免强烈震动。
  • 分解计算机数据时,可忽略频率重要性最低的数据,这样就能更紧凑地利用内存。这就是文件压缩的原理。

2 使用FFT分解信号

傅立叶变换将一个时域信号转换为频域信号。 频域信号显示了不同频率对应的电压。 频域是另一种观察信号的角度。

数字化仪对波形进行采样,然后将采样转换为离散的值。 因为发生了转换,傅立叶转换在这些数据上无法进行。 可使用离散傅立叶变换(DFT),其结果是离散形式的频域信号。 FFT是DFT的一种优化实现,计算量较少,但是本质上是对信号的分解。

请查看上图1中的信号。 有两个频率不同的信号。在该情况下,频域中就会显示两条表示不同频率的竖线。

图4 当相同幅值的两个正弦波相加,在频域中就显示为两条频率竖线
原信号的幅值在竖轴上表示。 图2中有个不同幅值的信号。频域中最高的竖线对应于最高电压的正弦信号。 在频域里观察信号,可直观地看出最高电压发生在哪个频率上。
图5 最高的竖线是幅值最大的频率
在频域里也可观察到信号的形状。 例如,频域中方波信号的形状。 使用不同频率的正弦波创建一个方波。即可预见,在频域中,这些信号都会被表示为一根竖线,每一根竖线都表示组成方波的正弦波。 如频域中,竖线显示为一个梯度,就可知道原信号是一个方波信号。
图6 频域中表示正弦波的竖线呈现为一个梯度

现实生活中,情况是怎样的呢? 许多混合信号示波器(MSO)都有FFT功能。 下图中,你可以观察到混合信号图中,方波FFT是如何显示的。 放大后可观察到频域中的尖峰。



图7 上图为原正弦波和FFT,下图是放大的FFT,可观察到表示频率的尖峰

在频域中观察信号有助于验证和发现信号中的问题。 例如,假设有一个输出正弦波的电路。 可在示波器上查看时域输出信号,如图8所示。 看上去没有任何问题!


图8 如果将两个很相似的波形相加,仍然会得到一个完美的正弦波
在频域中查看信号时,如果输出的正弦波频率稳定,应该只在频率中显示为一条竖线。 但是,可以看到在更高的频率上仍然有一条竖线,表示正弦波并不如观察到的那么完美。 可尝试优化电路,去除特定频率的噪声。 在频域中显示信号有助于发现信号中的干扰、噪声和抖动。

图9 查看图8中看似完美的正弦波,可以看出波形中有一个抖动

3. 加窗

FFT提供了观察信号的新视角,但是FFT也有各种限制,可通过加窗增加信号的清晰度。

3.1 什么是加窗?

使用FFT分析信号的频率成分时,分析的是有限的数据集合。 FFT认为波形是一组有限数据的集合,一个连续的波形是由若干段小波形组成的。 对于FFT而言,时域和频域都是环形的拓扑结构。时间上,波形的前后两个端点是相连的。 如测量的信号是周期信号,采集时间内刚好有整数个周期,那么FFT的上述假设合理。



图10 测量整数个周期(上图)可以得到理想的FFT(下图)

在很多情况下,并不能测量到整数个周期。 因此,测量到的信号就会被从周期中间切断,与时间连续的原信号显示出不同的特征。有限数据采样会使测量信号产生剧烈的变化。 这种剧烈的变化称为不连续性。

采集到的周期为非整数时,端点是不连续的。 这些不连续片段在FFT中显示为高频成分。这些高频成分不存在于原信号中。 这些频率可能远高于奈奎斯特频率,在0~ 采样率的一半的频率区间内产生混叠。 使用FFT获得的频率,不是原信号的实际频率,而是一个改变过的频率。 类似于某个频率的能量泄漏至其他频率。 这种现象叫做频谱泄漏。频率泄漏使好的频谱线扩散到更宽的信号范围中。



图11 测量非整数个周期(上图)将频谱泄漏添加至FFT(下图)

可通过加窗来尽可能减少在非整数个周期上进行FFT产生的误差。 数字化仪采集到的有限序列的边界会呈现不连续性。加窗可减少这些不连续部分的幅值。 加窗包括将时间记录乘以有限长度的窗,窗的幅值逐渐变小,在边沿处为0。 加窗的结果是尽可能呈现出一个连续的波形,减少剧烈的变化。 这种方法也叫应用一个加窗。



图12 加窗可尽可能减少频谱泄漏

3.2 加窗函数

根据信号的不同,可选择不同类型的加窗函数。 要理解窗对信号频率产生怎样的影响,就要先理解窗的频率特性。

窗的波形图显示了窗本身为一个连续的频谱,有一个主瓣,若干旁瓣。 主瓣是时域信号频率成分的中央,旁瓣接近于0。 旁瓣的高度显示了加窗函数对于主瓣周围频率的影响。 对强正弦信号的旁瓣响应可能会超过对较近的弱正弦信号主瓣响应。 一般而言,低旁瓣会减少FFT的泄漏,但是增加主瓣的带宽。 旁瓣的跌落速率是旁瓣峰值的渐进衰减速率。 增加旁瓣的跌落速率,可减少频谱泄漏。

选择加窗函数并非易事。 每一种加窗函数都有其特征和适用范围。 要选择加窗函数,必须先估计信号的频率成分。

  • 如果您的信号具有强干扰频率分量,与感兴趣分量相距较远,那么就应选择具有高旁瓣下降率的平滑窗。
  • 如果您的信号具有强干扰频率分量,与感兴趣分量相距较近,那么就应选择具有低最大旁瓣的窗。
  • 如果感兴趣频率包含两种或多种很距离很近的信号,这时频谱分辨率就非常重要。 在这种情况下,最好选用具有窄主瓣的平滑窗。
  • 如果一个频率成分的幅值精度比信号成分在某个频率区间内精确位置更重要,选择宽主瓣的窗。
  • 如信号频谱较平或频率成分较宽,使用统一窗,或不使用窗。
  • 总之,Hanning窗适用于95%的情况。 它不仅具有较好的频率分辨率,还可减少频谱泄露。 如果您不知道信号特征但是又想使用平滑窗,那么就选择Hanning窗。

即使不使用任何窗,信号也会与高度一致的长方形窗进行卷积运算。本质上相当于对时域输入信号进行截屏,对离散信号也有效。 该卷积有一个正弦波函数特性的频谱。 基于该原因,没有窗叫做统一窗或长方形窗。

Hamming窗和Hanning窗都有正弦波的外形。 两个窗都会产生宽波峰低旁瓣的结果。 Hanning窗在窗口的两端都为0,杜绝了所有不连续性。 Hamming窗的窗口两端不为0,信号中仍然会呈现不连续性。 Hamming窗擅长减少最近的旁瓣,但是不擅长减少其他旁瓣。 Hamming窗和Hanning适用于对频率精度要求较高对旁瓣要求较低的噪声测量。


图13 Hamming和Hanning都会产生宽波峰低旁瓣的结果

Blackman-Harris窗类似于Hamming和Hanning窗。 得到的频谱有较宽的波峰,旁瓣有压缩。 该窗主要有两种类型。 4阶Blackman-Harris是一种通用窗,在高90s dB处具有旁瓣抑制功能,有较宽的主瓣。 7阶Blackman-Harris窗函数有宽广的动态范围,有较宽的主瓣。



图14 Blackman-Harris窗的结果是较宽的波峰,旁瓣有压缩

Kaiser-Bessel窗在幅值精度、旁瓣距离和旁瓣高度之间取得了较好的平衡。 Kaiser-Bessel窗与Blackman-Harris窗类似,对于相同的主瓣宽度而言,较近的旁瓣更高,较远的旁瓣更低。 选择该窗通常会将信号泄漏至离噪声较近的位置。

Flat top窗也是一个正弦波,穿过0线。 Flat top窗的结果是在频域中产生一个显著宽广的波峰,与其他窗相比离信号的实际幅值更近。



图15 Flat top窗具有更精确的幅值信息

上面列举了几种常见的窗函数。 选择窗函数并没有一个通行的方法。 下表可帮助您做出初步选择。 请始终比较窗函数的性能,从而找到最适合的一种窗函数。

4 总结

  • 所有时域中的信号都可表示为一组正弦波。
  • FFT变换将一个时域信号分解为在频域中表示,并分析信号中的不同频率成分。
  • 在频域中显示信号有助于发现信号中的干扰、噪声和抖动。
  • 信号中如果包含非整数个周期,会发生频率泄漏。可通过加窗来改善该情况。
  • 数字化仪采集到的有限序列的边界会呈现不连续性。加窗可减少这些不连续部分的幅值。
  • 没有窗叫做统一窗或长方形窗,因为加窗效果仍然存在。
  • 一般情况下,Hanning窗适用于95%的情况。 它不仅具有较好的频率分辨率,还可减少频谱泄露。
  • 请始终比较窗函数的性能,从而找到最适合的一种窗函数。

了解FFT和信号加窗相关推荐

  1. FFT分析的加窗和重叠

    FFT分析的加窗和重叠 这将通过实例说明加窗和重叠对频谱分析的影响.用10Hz的正弦波,以说明重叠窗函数在频谱分析过程中的不同之处. 重叠分析,就是连续分析的时域数据块通过指定的时间纪录百分比进行重叠 ...

  2. python信号处理加汉明窗_SciPyTutorial-非整周期信号加窗

    17. Scipy Tutorial- 非整周期信号加窗 17.1 什么是加窗? 使用FFT分析信号的频率成分时,分析的是有限的数据集合. FFT认为波形是一组有限数据的集合,一个连续的波形是由若干段 ...

  3. matlab中fft插值,在加窗插值FFT分析中,如何用matlab求得双谱线插值的修正...

    下面是我在之前论坛里找到的程序里进行改编的,但还是弄不来,希望懂的人能指导下 f0=50; fs=50*256; N=2048;%2048/256=8 rad=180/pi; n=[0:1:N-1]; ...

  4. python对语音信号读取、分帧、加窗

    python对语音信号读取.分帧.加窗 一.读入音频信号 语音信号有三个重要的参数:声道数.取样频率和量化位数. 声道数:单声道或者双声道 采样频率:一秒钟对声音采样的次数,例如10000HZ代表一秒 ...

  5. 数字信号处理--加窗

    1. 数字信号处理为什么要加窗? 防止频谱泄漏现象 快速傅里叶变换(FFT)实现了时域到频域的转换,是信号分析中最常用的基本功能之一.FFT变换时,总是从离散数据中选取一部分处理,将其称为一帧数据.而 ...

  6. Gabor滤波器为什么能实现频率域加窗

    Gabor 特征是一种可以用来描述图像纹理信息的特征,Gabor 滤波器的频率和方向与人类的视觉系统类似,特别适合于纹理表示与判别. Gabor 特征主要依靠 Gabor 核在频率域上对信号进行加窗, ...

  7. FFT频谱分析(补零、频谱泄露、栅栏效应、加窗、细化、频谱混叠、插值),Matlab、C语言代码

    文章目录 引言 Matlab FFT函数 频谱混叠 栅栏效应 细化技术 什么是细化技术? 细化FFT技术的应用: Zoom-FFT算法介绍及MATLAB实现 Zoom-FFT根本没有实现"细 ...

  8. matlab语音分帧加窗,语音信号的加窗处理

    平稳的随机过程是研究语音信号的主要手段,但是语音信号本身并不是平衡的. 一,语音信号不平稳 语音信号在产生过程中与环境和发声器官的联系很紧密,与各种运动都是相关的,信号本身是不平移的信号.主要是由于发 ...

  9. STM32 fft加窗的问题(汉宁窗)

    在FFT处理线面呢,很多人就说要加窗,加窗的好处了就是防止能量泄露和高频滤波啊,不过精度呢就会相应的降低.(听说是这样的.本人小白) 窗的种类也很多啦,然后听说啥都不懂的就可以了选择汉宁窗... 在M ...

最新文章

  1. java 购物车价格类型_WooCommerce - 为购物车中的每个产品添加自定义价格
  2. iOS 三种类型的Block
  3. 图之典—可视化图表的词典
  4. 存储过程 psal emp.sal%type是什么意思
  5. 11个顶级 JavaScript 日历插件
  6. jsp获取当前时间存入mysql数据库_jsp获取当前时间插入Mysql数据库?
  7. inputn函数与input函数的区别
  8. 微课|中学生可以这样学Python(例7.2):三维向量类
  9. 亚马逊发力智能音箱商业模式,Alexa正式支持付费第三方应用
  10. 可以用计算机控制手机的软件,还有这样的神奇软件!让你用PC操控手机的神器...
  11. 苗木损耗1.1用计算机怎么算,04园林绿化定额说明
  12. 新买的电脑 Windows10/Windows11即将过期怎么办
  13. 基于stm32的简单车牌识别原理
  14. *.LDB文件介绍(转)
  15. 百度网盘电脑登录二维码加载不出来解决方法
  16. Richard 外推法求梯度
  17. Grafana 系列文章(十五):Exemplars
  18. java的单行注释符是_Java 程序中的单行注释符是( ),多行注释符是( )_学小易找答案...
  19. apt-get --allow-unauthenticated upgrade
  20. 用python-rtmidi捕获MIDI键盘的输入,并回放MIDI消息

热门文章

  1. 华三 IRF的相关配置和注意事项。
  2. css几种常见的单位
  3. 搜狗浏览器安装自定义JS脚本的方法
  4. Android 只显示一次引导页
  5. Apipost的极客精神
  6. 判断邮箱 格式是否正确
  7. 申请Office 365一年免费的开发者账号攻略
  8. X-Designer Overview
  9. OS_用户层的IO软件@缓冲区@磁盘高速缓存@异步IO
  10. (七)前端基础之背景图片,图片超链接存在的问题