可以看到这一结果是X[k]的可行递归计算。这就是Goertzel算法,下图3给出了相应的图形化解释和算法步骤图。y[n]的计算由输入序列的最后一个值x[N-1]开始。在步骤3之后,X[k]的一个频谱值就在输出端给出了。
步骤 |
|
寄存器 |
|
0 |
|
|
|
1 |
|
|
|
2 |
|
|
|
3 |
|
|
|
图3 长度为4的Goertzel框图和算法
一般情况下,如果只有少量频谱成份需要计算的话,Goertzel算法是很有吸引力的。对于整个DFT而言,计算量是N2量级的,直接DFT计算相比要复杂的多。Goertzel算法,是计算DFT的一种线性滤波算法,它比FFT算法更快。因为,通过FFT可以计算得到信号所有谱线,了解信号整个频域的信息,而对于DTMF信号只需关心其8个行,列频以及其二次谐波的信息即可。此时算法更加我采用的DTMF信号检测的原理是分析信号的频谱特性来分辨不同信息 。整个检测过程分两步:首先采用Goertzel算法在输入信号中提取频谱信息;接着分析频谱信息,提取输入的DTMF信号码。
上述算法要通过同时进行实部和虚部的运算,得到信号的幅度信息和相位信息,但在DTMF信号的识别中系统只需要判断信号的幅频特性,近而又有了Goertzel优化算法,算法框图如下图4所示。
图4 Goertzel优化算法框图
由图中可知高斯公式:
(A-1-3)
(A-1-4)
wxg1988 2012-9-26 16:38
用户403664 2012-9-26 10:41