下面介绍保证数据计算精度的方法。
为了提高计算速度,系统中使用定点数法运算FFT,且使用Q13表示数据。蝶形运算中,其蝶形输出的数据的实部和虚部都使用3次加法运算,即每级蝶形运算都可能使数据扩大3倍,因此,蝶形输出的实部和虚部结果都需要右移2位(缩小4倍)以防止溢出。但随着计算级数的增加,移位将会使数据变得越来越小。例如,128点FFT,总共需要7级运算,数据最终将移位2×7=14位(缩小47=16 384倍),因此当信号幅值不够大时,经过多级运算可能会无法分辨出主信号频率。
设FFT运算结果的主信号频率点的对应实部为r,虚部为i,其幅值为A(ADC的量化值),参与运算的数据点数为N,由FFT功率谱计算的性质可得:
设经过定点FFT运算,也就是运算过程中有移位,则该主信号频率点的模为K,即:
|