一、傅里叶变换 (FT)
二、傅里叶变换(FT)的缺点与短时傅里叶变换(STFT)
三、短时傅里叶变换(STFT)的缺点与连续小波变换(CWT)
四、连续小波变换(CWT)的缺点与离散小波变换(DWT)
源代码:1368069096/From_FT_to_WT_examples-
二、傅里叶变换(FT)的缺点与短时傅里叶变换(STFT)
1、离散傅里叶变换(DFT)
在上一篇文章里,我们讲解了FT的本质(1335:从傅里叶变换进阶到小波变换(一))。
在本文正式开始之前,我们需要明确一下实际信号进行的FT的一些特殊之处。实际采集的信号往往是这样的:
实际的信号往往具有两个特点:1、离散性,就是采集数据不连续,很容易理解,采集信号肯定是一个一个数据采集的;2、有限性,虽然理想的傅里叶变换是从
进行积分,但是实际信号往往实在一个区间内(a,b)的。
所以,我们要用到离散傅里叶变换(DISCRETE FOURIER TRANSFORM,简称DFT),DFT与FT相比,就是多了两个特征:1、离散型,2、有限性。
来,我们来一起试一试如何推导DFT公式。首先设采集了N个信号点,其时刻为
,对应时刻采集到的信号值为
。很自然的,原来信号连续,是积分,现在数据离散了,那就是把积分变成累加。于是我们得到:
。
这么一来,我们发现,原信号有N个数据点,DFT变换后的信号却变成连续的了,我们将之称为离散时间傅里叶变换(DISCRETE TIME FOURIER TRANSFORM,简称DTFT)。
DTFT有两个缺点,第一,
且连续,需要进行无数次计算,计算机无法计算;第二,在进行计算的时候,我们需要已知:
和
,但是调用过FFT函数的同学都知道,FFT只需要已知
就可以进行。
这是怎么回事呢?
首先,我们使用相对采样时间
代替真实采样时间
,
可以得到:
。
此时我们发现,
变成了以
为周期的函数,即
那么,我们只需要计算
区间的
,就可以得到
区间的
了。也就是说,通过使用相对采样时间
代替真实采样时间
,我们将
的范围从
缩小到了
。
自然地,我们希望将
离散化称为N个点,这样计算机就可以计算了!则取
,则有:
好了,这就是离散傅里叶变换DFT了!
接下来,来看DFT的两个性质:
第一,
,即
是所有元素的和,通常会比其他的元素大几个数量级。
第二,
,
,
,即第二个元素和最后一个元素共轭,同理有
等等。
如下图所示,DFT之后的
个元素中,第一个为均值;之后的
个元素,只有一半元素是独立的。
需要说明,这里
是一种相对频率,独立元素中,最小相对频域为1,最大相对频率为
。
要想把
还原到真实的频率
,只需要
,将
映射到
即可,
为采样频率。
PS:简单说一下,根据香农采样定理,当采样频率为
时,能采到的最大信号频率为
。因此,将相对频率
通过公式
,得到的
就在区间
内,也就是真实频率的区间了。
所以DFT公式为:
PS:DFT公式的形式很多,有的是从时域到频域,有的是从空间域到频域,但是本质都是一样的,抓住离散性和有限性两个特点即可。离散性是指积分变成了累加,有限性是指积分/累加区间不是
了,而是一个有限区间了。
2、傅里叶变换(FT)的缺点
应该说明,虽然本小节的题目是FT的缺点,但是FT和DFT的本质是相同的。由于信号都是有限长度的、离散的,所以接下来进行的都是DFT,不过在某些部分为了方便理解,还是写了FT的公式。在看本文的时候,你不需要刻意区分这两个概念。
我们现在来看两个信号,如下图:
,
。
这两个信号都是由sin(t)和sin(5t)组成的,y1是先出现了sin(5t),再出现了sin(t),y2是先出现了sin(t),再出现了sin(5t)。
我们对它们进行FT,看看他们包含怎么样的频率,如下图:
y1,FT
y2,FT
Amazing!发现了什么?变换后的结果是一模一样的,都在w=1rad/s和w=5rad/s出现了峰值!这就可以说明FT的缺点了——FT只能提供频域信息,而完全丢失了时域信息!!!
不管某一频率的信号出现的时间是早还是晚,FT都是将它一视同仁地乘上sin和cos(FT的变换基函数),然后在整个时间区间加和。因此,它不能提供某一频率信号出现的时间。
比如,对于上面两个信号,FT只能告诉我们,它们都有1rad/s和5rad/s的频率,而不能告诉我们1rad/s和5rad/s分别出现在哪个时间段。
所以,怎么办呢???
先别看下面,你自己想三想,你肯定可以想到的!
想一想——
想二想——
想三想——
好了,你想的是对的!
那就是把信号分成左右两半啊!左边进行一次FT,右边进行一次FT,很简单吧!好了,这就是短时傅里叶变换(STFT)的基本原理。
所以,接下来我们要正式开始步入——短时傅里叶变换(STFT),看看它是如何解决这个问题的。
3、短时傅里叶变换(STFT)
如上所述,我们将信号从中间截断,左边进行一次FT,右边进行一次FT,分别来看看。
y1左
y1右
y2左
y2右
可以看出,y1的左半部分是5rad/s,右半部分是1rad/s,y2恰好相反。这就说明,在y1中,(0, 25)的信号是5rad/s的频率,(25, 50)的信号是5rad/s的频率,y2恰好相反。这就是短时傅里叶变换的基本原理。
但是数学嘛,能用一个公式表达的,就别用一段话表达,截断、切开这些语句太不专业了。截断、切开的操作,更专业的讲叫作分窗,其实是可以通过数学上的处理变成DFT变换的基函数的一部分的。接下来我们来看一看。
首先,你可以想象一下,有一个窗子在这个信号上从左向右滑动,每次你都只能看到这个信号的一部分,所以我们把这个长度叫作窗长width。
现在我们来定义一个方窗函数:
,如下图,即是width = 10 的一个方窗函数:
定义了方窗函数之后,我们只需要对方窗函数进行平移,再与原信号作乘,就相当于原来的截断、切开的操作,因此这种操作更专业地叫作分窗。
那么,将方窗函数向右平移了
(s可能是sliding的意思吧),再与原信号相乘,由于方窗函数除了中心的width部分是1外,其他部分都是0,这就相当于提取出了原信号在
处,宽度为width的部分,这个信号分窗这个操作就可以写成:
。
如下两图所示,将
与
相乘,就相当于取出来了
中的(20,30)中的一段。
那么,我们对原信号中被提取出来的这一部分进行FT,就可以写成:
PS:这里之所以
要变成
,是为了保证做FT的时候相乘的基函数具有统一性。
如此,变换后的
代表
原信号在
处、宽度为width的部分的傅里叶变换,也就可以提取出来 原信号在
处、宽度为width的部分,包含各个频率部分的多少!带入不同的
,也就是随着窗子的滑动,就可以知道不同的时间段内频率的成分。
我们采用width为10的方窗函数对
进行STFT,如下:
首先,方窗函数位于
处,与原始信号相乘,选择出(0,10)的信号。
对选择出来的信号进行FT。可以看到,当
时,选择的时间区间为(0,10),这一部分只包含了
的频率成分。
之后,方窗函数向右移动,与原始信号相乘,选择出不同时间区间的信号,进行FT。这里选择
进行展示。
可以看到,当
时,选择的时间区间为(20,30),这一部分即包含了
的频率成分,也包含了
的频率成分。
重复以上过程,我们可以将方窗函数选择的不同时间区间的信号的FT的结果拼合起来,形成一张三维图。由此,我们即可知道,在
的时间区间内,信号具有怎么样的频率成分。
通过width = 10的方窗的STFT结果,我们可以知道,对于信号:
,在(0,10)、(10,20)时间区间内,具有20rad/s的频率成分;在(20,30)时间区间内,具有1rad/s和20rad/s的频率成分;在(30,40)、(40,50)时间区间内,具有1rad/s的频率成分。
最后,进行三点重要的讨论。
第一点,变换之后的
是一个三维函数,它有两个自变量,
和w。
指的是
原信号在
处,w上一篇文章我们已经讨论过了,就是频率。所以,STFT提取出来的信息就是: 原信号在
处、宽度为width的部分,包含的频率信息。
原则上讲,可以得到任一
对应的频率成分,如下图。
但是
是连续的,并不意味着你知道了每个时刻的频率成分,你知道的还只是
这一段区间内的频率信息。所以一般不需要计算所有的
,每隔width计算一次即可。
你或许会想,我把width缩小一些,不就可以知道更精确的时间范围内的频率了吗?是的,你的猜想很对!但是,如此做也会带来一些频域分辨率的问题。这一点涉及到一些时域分辨率和频域分辨率的知识,我们下一篇文章会着重讲。
第二点,方窗函数是可以包含入变换基函数内部的,这组成了新的基函数,同时反映了STFT的本质。
我们来看, 如果定义
,那么
那么,STFT的公式:
就可以写成:
我们在上一篇文章里说过,变换就是将原信号乘上一个基函数,再积分的过程,那么,SDFT的基函数就是
!
Amazing!所以,STFT的本质是什么呢?
STFT的本质就是将FT的基函数
乘上一个方窗函数,形成了一个新的基函数
!
前面说的分窗、截断之类的都是表象, STFT的本质是基函数的改变!
那么,为什么STFT的基函数可以用于分窗,而FT的基函数不行呢?我们来看,我用正弦函数sin(5t)表示原来的基函数
,那么FT基函数和STFT基函数如下:
原因就是:FT的基函数是在时域无限延伸的,因此,无论怎么平移,都是任分布在整个时域的,起不到分窗的作用。而STFT的基函数只在时域一段不为0,在剩下的时域都是0,因此,STFT的基函数的平移,就相当于自动加了窗子啦!
这种只在时域一段不为0,在剩下的时域都是0的性质被称为“紧支撑性”(compactly supported),具有这种性质的函数,平移之后与一个信号相乘,就相当于分窗操作。这一点很重要,我们之后讲小波变换的基函数的时候还会讲。
第三点,我们前面对于分窗操作使用的函数一直称为“方窗函数”,这是一种最理想的窗函数。还有一些其他的窗函数,比如,汉宁窗、海明窗、高斯窗等。窗函数本质都是一个窗子而已,原理是一模一样的,上面所有的讨论也都成立,只是这些窗子会让信号稍稍变形一丢丢而已。你就想像方窗函数就是一面平面镜,其他的窗函数就是哈哈镜就行了。
1335:从傅里叶变换进阶到小波变换(一)zhuanlan.zhihu.com
1335:从傅里叶变换进阶到小波变换(三)zhuanlan.zhihu.com
1335:从傅里叶变换进阶到小波变换(四)zhuanlan.zhihu.com