稀疏傅里叶变换原理说明(二)


书接上回:稀疏傅里叶变换原理说明(一)


三、流程中各部分详解

3.3 降采样FFT

降采样指的是频域降采样,当然这一步也是在时域上进行操作的。先看公式:

$$y_{i}=\sum_{j=0}^{\frac{N}{B}-1}x_{i+Bj}$$

上述操作等价于

$$\hat{y}_{i}=\hat{x}_{i(n/B)}, 其中 i=0,1,2,3,...,B-1$$

需要说明的是,Â的含义是对信号序列A进行傅里叶变换后的结果,上同。这里举个例子:

这个例子中,N=4096,滤波器长度ω=384,分筐数B=64。这里与公式稍有出入是因为:之前在滤波器处提到,从信号序列中取出与滤波器序列长度相同的部分序列进行处理,而降采样在滤波之后,因此降采样也没必要对所有的信号序列进行处理,只需要对被滤波器取出来的那部分进行处理即可,因此公式实际为:

$$y_{i}=\sum_{j=0}^{\frac{ \omega }{B}-1}x_{i+Bj}, 其中 i=0,1,2,3,...,B-1$$

既然这一步叫降采样FFT,因此FFT是不能少的,而fft的对象就是经过了求和后的序列y。原本需要进行N点FFT运算,现在只需要进行B点FFT运算,这也是SFT提升运算速度的关键之一。

注:分筐

在SFT的理论框架中,将频谱重排和滤波操作合称为分筐。分筐的含义是指,原始信号频谱中谱线所在的位置(1~N),经过一系列变换后,变到了另一个新位置之中(1~B),每一个新位置的幅值都是由原信号频谱中N/B个位置的幅值按比例相加得到的。正因为这种相加特性,稀疏性的作用就体现出来了:因为大部分点的幅值都是趋近于0,因此每个筐中有很大概率只会有一条谱线。

论文《稀疏傅里叶变换理论及研究进展》【1】中有一张很好的图能描述以上过程:

左图中虚线是原始信号所在的位置和幅值,实线是经过滤波器卷积后频谱,总点数N=256、分筐数B=8,因此一个筐中有256/8=32个点进行相加。时域上的相加操作等效于频域上的采样操作,采样点分别是0、32、64、96、128、160、192、224,也就是右图中的结果。采样点数从256变成了8,明显是一个降低的过程,因此这一过程也被称为降采样。

3.4 定位

定位和估值问题的实质都是从B个筐中,想办法恢复或者模拟出原信号。

原信号谱线所在位置经“分筐”后变到一个新位置,是一个映射过程,又因为每个位置都和一个幅值对应,所以这个过程与“哈希映射”非常相似。利用这种思想进行信号恢复的方法称为“哈希映射法”。除了这种方法外,还有其他恢复方法,但使用“哈希映射法”居多。有的恢复方法可能不分为“定位”和“求值”,统一叫做“重构”,这也是在稀疏傅里叶变换原理说明(一)中的理论框架图将“定位”和“求值”用虚线框住的原因。

 使用“哈希映射法”进行定位的流程如下。

首先,对降采样FFT后的信号序列z_hat(这个hat后缀指的是该字母Â头上的玩意,指代FFT后的频域序列,懒得编辑公式了)按照幅值大小进行排序,取出总计dK个最大值所在的坐标。这里的K指的是稀疏度,d一般是一个大于零的整数,用来确定运算精度。

这是取dK个坐标而不是K个坐标是因为:经过频谱重排、滤波器、降采样等操作,不可避免地会生成额外的频率分量,多取一些坐标利于排查出哪些“筐”中是有用信号哪些“筐”是无用信号。但d取得越大,后续计算速度就越慢。下图中的例子中,K=1,d=2,因此取最大两个值的坐标J(1)=25和J(2)=26

由之前的分析可知,每个筐中都是N/B个频率成分的和,因此一个筐对应有N/B个坐标值,利用函数

low = mod(ceil((J(i) - 1 - 0.5) * N / B), N)
high = mod(ceil((J(i) - 1 + 0.5) * N / B), N)

确定需要进行逆映射的坐标位置的集合。本例中N=4096,B=64,一个筐中含有64个位置。J(1)=25对应的范围为1504~1567,J(2)=26对应的范围为1568~1632,再分别对这些范围内的值进行逆映射,就可以对应上原信号的频率了。逆映射公式为:

$$j=(i \ast \sigma ^{-1}) \% N$$

σ-1是σ关于模N下的逆元,而这个σ就是最开始进行频谱重排的缩放因子。

以J(1)为例,逆映射的结果是:

坐标范围 1504 1505 1506 1507 1508 。。。 1566 1567
原始频率 417 1700 2983 170 1453 。。。 2139 3422

因此,第25号“筐”中的幅值是原始信号中频率成分的位置在417、1700、2983、170。。。等的和。J(2)同理。

这里需要说明的是,这只是一次“定位”得到的结果。一个频谱重排的缩放因子σ对应一个逆元σ-1,对应B个筐,对应dK个最大值的坐标,对应dkN/B个原始信号的频率成分。SFT作为一种估计算法,是不可能单靠一次“定位”就能得到原始信号中有用频率成分的位置的,需要统计多次“定位”的结果。每个“定位”流程选取的σ和σ-1都不一样,因此每个流程中dkN/B个原始信号的频率成分也不一样。假设总共进行了L次定位,则会得到L*(dkN/B)个原始信号的频率成分坐标,统计其中出现次数大于等于L/2的数,就可以认为该数是有用信号的坐标值了。


【1】:论文链接:https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CJFD&dbname=CJFDLAST2017&filename=BJLG201702001&uniplatform=NZKPT&v=mrzmIb3Tbl2BfzP0LjRql-IlIjVoB4_KtuZ1JtiGprUQSd08oI01SU0gtx2a_CEy

由于篇幅限制,后续内容放在了“稀疏傅里叶变换原理说明(三)”当中。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM