摘要:本篇文章是借鉴学习其它博主CZT算法的总结,相关来源已经附在文末的参考资料一栏中。
概述:
Chirp Z变换也叫CZT变换或线性调频变换。Chirp-Z变换(CZT)是离散傅里叶变换(DFT)的一般化。具体来说,设信号长度为N,DFT相当于在Z平面单位圆上N等分的采样,而CZT可以沿着任意满足
的螺线进行采样,而M不必等于N。取
则为对单位圆进行M等分的采样。在下文中,我们仅讨论使用CZT在单位圆上采样的情况,因为这样有着更清晰的频率意义。
从频率采样理解CZT
CZT可以用来对频率进行更密集的采样,这让离散频谱逼近连续频谱。如下图所示,我们对11点常数序列进行DFT变换,其只有直流分量,其余频率分量均为0。这似乎符合我们的直观认识,因为常数序列看起来就是没有波动的。但对其做110点CZT变换,我们会发现其频谱是具有旁峰的,DFT的结果对应的正好是连续频谱的零点。这样的结果要如何理解呢?
从周期延拓理解CZT
我们通过回答另一个问题来解释上述结果:如何用DFT来得到11点序列的110点频率序列?想要DFT得到110点序列,其输入必须是110点。做法是通过补零将11点序列转为110点序列。我们惊讶地发现,补零得到的110点序列的DFT结果,与110点CZT得到的结果是完全一致的。补零补在哪对频谱的幅值是没有影响的,会有一个相位的影响。
理解这个结果要从DFT的原理入手。DFT相当于将有限的主值序列进行周期延拓,对得到的无限的周期序列进行DTFT后,截取频域的主值序列。以我们的问题为例,对11点常数序列进行周期延拓,其得到的是无限常数序列。而对补零后的110点序列进行周期延拓,其得到的是11个1和99个0交替出现的无限序列。对应的序列不同,所得到的结果当然也不同。
所以更密集的频域采样,等价于更多的补零。对于连续频谱,其相当于无限长的补零,实际上已经不是周期序列,而是直接进行DTFT了。这也就能说明为什么得到的频谱不是纯直流的,因为实际上连续频谱对应的并不是常数序列,而是有突变的。
CZT与FFT性能对比
CZT与补零后的FFT既然结果上是一样的,那么性能上孰优孰劣呢?我们固定信号为11点常数序列,对于CZT,我们直接计算其
点变换;对于FFT,我们将序列补至
长后进行FFT。虽然CZT看起来不需要补零省了些计算量,但实际上CZT还是远比FFT慢。空间占用上我们也进行了实验,CZT和FFT几乎没有区别。所以结论是,对于全单位圆上的采样,FFT远胜CZT。如果需要仅针对部分区间采样,或许才是CZT的应用场景。
CZT原理
CZT的算法步骤
CZT的特点(与FFT比较)
参考