本发明是关于一种对被测电信号进行频谱分析的方法,更具体地说它是关于一种具有抗混效果的快速富里叶频谱分析方法。 当前,数字计算机与数字信号处理器(DSP)等的迅速发展与普及,使得模拟信号也被离散成数字信号来处理。然而从信号的复原与信号的频谱分析角度考虑,模拟信号用离散信号代替后会出现以下原理误差。其一是非时限信号用有限时域的离散信号代替时产生的截尾误差(Truncatederrors),对周期信号这种误差又表现为采样周期与信号同期不同步时出现的泄漏误差(Leakage errors);其二是非带限信号时,以及带限信号但采样频率低于香农(Shannon)采样定理要求时出现的频谱混迭误差(Aliasing errors);其三是离散信号频谱周期性重复,不管原模拟信号包含多少频率分量,采样N点均只能确定N/2个带有上述误差的频谱系数,并且频率越高的分量,频谱系数的误差越大。
泄漏误差已找到一些较有效的解决办法,比如加窗技术与加窗插值技术等。混迭误差虽然已深入研究80余年,在各种介绍FFT原理的文献中都被涉及到,但还只停留在如何确定误差规模阶段;如何消除这种误差,特别是如何在信号快速处理过程中消除这种误差尚待解决。
频谱分析是信号处理的核心,电子系统的谐波分析即频谱分析之一种。分析连续信号频谱时,目前普遍采用快速富里叶变换(FFT)。现有各种版本的FFT都只是离散富里叶变换(DFT)的一种快速算法,属数字处理技术之列,存在着本发明要讨论的频谱混迭误差与频谱系数周期性重复的上述通病。混迭误差严重程度随信号形式而异。以一周期内的表达式为
x(t)=(2/T)t-1
的锯齿波为例(见附表1),在采样周期与信号周期同步因而没有泄漏误差的情况下,一周期采样64点时,现有FFT算出的第31次谐波的正弦系数只有理论值地0.074748,一周期采样128点时,31次谐波的正弦系数也只有理论值的0.79914;余弦系数(理论值全为零)误差更大。混迭误差的影响由此可见一斑。
为了消除混迭误差,现有频谱分析仪采取的对策是,用低通滤波器将信号中高于1/2采样频率的高频分量滤除掉。这种方法虽能减少,所分析出的N/2个频谱系数中的混迭误差,但却带来其它误差。原因是低通滤波器的幅频特性不可能是矩形,相频特性不可能是直线;信号通过后,高频分量滤掉了,低频分量的幅度与相位却产生了失真,使得分析结果仍与真实情况不同。特别是低通滤波器带来的相位误差,在许多要求精确知道谐波相位的场合是不允许的。因此采用低通滤波器也不能很好解决现有FFT算法存在的精度不高,所分析的频谱范围不宽的问题。
面对这一情况,一种保留信号的高频分量仍能压制频谱混迭误差,从而可大大提高频谱分析精度与扩大所分析的频谱范围,并能缩短分析时间的高精度快速频谱分析方法,不仅对工程应用有重大意义,对数字处理技术与信号分析理论也有重大意义。
本发明的目的就是要提供一种上述的快速高精度频谱分析方法。
下面阐述一下本发明快速高精度频谱分析方法的数字原理。
满足Dirichlet条件的函数x(t),在[o,T]区间上可用Fourier级数表示为:
式中
AK称为K次谐波的复振幅,AK是其幅值,ψK是其相位,aK,bK分别为K次谐波的余弦系数与正弦系数。所谓频谱分析,就是求出各次谐波对应的AK。
设△为很小的时间间隔,T=N·△,x(t)在tn=n△时的值为xn。用各个xn代替上式中的x(t),即用求和代替积分时,就得到了现有快速频谱分析方法FFT计算AK的公式:
采样定理从信号理论角度分析了AKF与AK的差别,从数学角度考虑,AKF是求和得到的,真正的AK应由积分得到,故用FFT方法得到的信号频谱与真实频谱之间必存在原理误差。
为求出真正的AK,不能采用现有FFT采用的简单求和方式,本发明采用精确计算(2)式所给的积分。
计算可分段进行:
式中
一种可供选择的计算AKn的方法是利用欧拉数值积分公式,参见安德列、安戈著、陆志刚等译,人民邮电出版社出版的“电工、电信工程师数学(下)”,第十章。该公式计算积分时多次实行分部积分法,直至后面的分部积分结果可忽略。此法直接运用于(5)式时效果不佳,原因是被积函数中有周期因子exp(-jzkπt/T),无论分部积分多少次,这个因子总原样存在,无法判定后面部分是否可忽略。针对(5)式这样一种特殊被积函数,我们对欧拉数值积分方法作了改进。我们先将被积函数中的xn(t)部分在[tn-△,tn+△]区间展开成台劳级数,由于△很小,xn(t)可用它在该区间展开式的前m+1项来逼近:
Xn(t)≈Σm=0Mam(t-tn)m(6)]]>
M的取值视△的取值而定,△大则逼近xn(t)所需的M值高,△小则M值低。将(6)式代入(5)式,这时再多次使用分部积分法,直至被积函数变为零为止,结果得:
式中xn(n2l)(t),xn(2l+1)(t)分别为xn(t)的2l阶与(2l+1)阶导数。现有FFT的频谱系数计算方法,可看成是(6)式在M=0时的特例,即用x(t)在tn处的采样值代替[tn-△,tn+△]区间的xn(t),因而带来混迭误差。为消除混迭误差,必须考虑xn(t)展开式中的高式次项。一般△<<T,因此取xn(t)在该区间的级数展开式的前三项即可有相当高的精度。将(6)式中的各个系数am用t=(n-1)△,n△,(n+1)△时的采样值xn-1,xn,xn+1的函数来表示,并考虑截尾误差,然后代入(7)式,计算整理得:
式中,
ZK= UK+ jVK(9)
Z*K为ZK的共轭复数,VK、UK与RK则是只与比值K/N有关的实常数,其值随K的增加而单调下降。将(8)式代入(4)式,最终得:
式中
WN= e-J(2π)/(N) (11)
F=(X0-XN)/N (12)
(10)式就是本文高精度频谱分析的基本公式。
(10)式中上述的实常数UK、VK、RK的数学式如下:
π
UX=3+2cos2(2KπN)2(2KπN)2-Sin2(2KπN)(2KπN)3(13)]]>VX=N2Kπ+Sin2(2KπN)2(2Kπ/N)2-1-cos2(2kπ/N)(2kπ/N)2(14)]]>
RX=4|Sin(2kπ/N)(2Kπ/N)2-COS(2Kπ/N)(2Kπ/N)2|(15)]]>
(10)式所示的具有抗混(Anti-Aliasing)效果的AK精确表达式如不能实现快速计算,本文方法将难以推广应用;而按(10)式快速计算AK时,如能尽可能利用现有FFT程序,则本文方法更易于推广普及。下面我们来寻找满足这种要求的算法,并将这种算法命名为FAFT(Fast Anti-Aliasing Fourier Transform)。
(10)式中的UK、RK、VK都是与采样值无关的常数,可预先算好储存备用;F也只与首尾两点的采样值有关,容易计算。关键是如何实现
的快速计算,为此我们令:
k于是为:
=2UKAeven(K)+RKAodd(K)WW-ZWF (18)
这时如能同时实现Aeven(K)与Aodd(K)的快速计算就等于实现了AK的快速计算。由(16),(17)两式可知,Aeven(K)与Aodd(K)分别为N/2个偶次采样数据与奇次采样数据对应的复频谱系数,为计算它们须先将采样数据按奇、偶顺序重新排列。这并非本文方法的额外要求,现有FFT也须如此重新排列数据:时域抽取法(Decimation in Time)开始时进行,频域抽取法(Decimation in Frequency)结尾时进行。所以这一步可直接利用现有FFT的有关程序实现。
计算even(K)与odd(K)也可借用现有FFT程序,比如时域抽取法的Cooley-Tukey算法。仔细分析这种算法可知,对于N=2S个被分析数据,该算法共循环S步,其中第(S-1)步变换出的数据,正好是这里的even(k)与odd(k)。所以利用现有FFT算法即可实现even(K)与odd(k)的快速计算。第(S-1)步后,将现有FFT程序稍加改动,即不继续计算even(K)WKN与odd(K)WKN,而是只计算后者,然后按(15)式要求合成。这样,借用几乎没作什么改动的现有FFT程序,就可一举实现高精度AK的快速计算。
下面将结合附图对本发明进行详细说明。
图1是实现本发明方法的频谱分析仪的方框示意图;
图2是本发明信号频谱分析方法的流程图;
图3是第一实验的信号波形;
图4是第二实验的信号波形。
为了便于理解,首先对实现本发明方法的频谱分析仪的方框图作一介绍(参见图1)。它主要包括数据采集电路(1)、存储器(2)、中央处理单元CPU(3)、显示器(4)、打印机(5)以及键盘(6)等。数据采集电路首先将要分析的信号(模拟形式)拾取,采样并转换成数字信号,该数字信号通过总线(7)送入存储器(2),中央处理单元CPU(3)将存储器(2)中的数据进行处理并计算,最终得出各次谐波分量的系数AK值,并显示在显示器上或通过打印机打印出来。
下面将结合图1和图2对本发明的频谱分析方法作一祥细介绍。
按照本发明的频谱分析方法,它包括如下步骤:
1、初始数据采集
数据采集电路(1)对输入的被测信号进行N个点的采样,并将采样点的值变成数字信号存入存储器(2)中。设该N个采样值为:
X0,X1,X2……XN
其中采样点数N可以根据测量的精度要求而定,比如:N为4、8、16……,实际操作时可以通过键盘来设定N的值。N值定了以后,按照N=2S则S的值自然就定了,S为现有FFT中的计算步骤。
根据所存储的采样值计算F:
F=(X0-XN)/N
2、利用现有的FFT程序作奇偶排列
即将存储在存储器(2)中的初始采样数据按奇数和偶数重新排列,以便于以后的计算,
X0,X2,X4……XN-2
X1,X3,X5……XN-1
3、执行现有FFT方法前(S-1)步,计算:
4、完成现有FFT方法第S步的一半计算内容,求出:
5、合成
按照下式求出:
=2UKAeven(K)+RKA′odd(K)-ZKF
其中UK、RK、ZK是事先分别按照公式(13)、(15)和(9)计算好并存在存储器中的。
6、显示或打印
将上面求出来的K次谐波系数AK显示在显示器(4)上或通过打印机(5)打印出来。
本发明的快速高精度信号频谱分析方法(FAFT)用三项多项式逼近各区段的X3(t),精确算出了Akn对应的积分值,精度必然比FFT高;这样,采样间隔取大一些仍能比FFT精度高。对于同一个被采样信号,采样间隔大就意味着采样点数N少,而分析过程中所需的复数乘、加运算次数M与采样点数N之间有以下关系:M=Nlog2N,N小即意味着计算时间短,因此FAFT与FFT相比,不仅可大大提高精度,还可缩短计算时间。另外,FAFT不是用离散信号频谱代替连续信号频谱,不受采样定理限制。对带限信号,即使用低于采样定理要求的速率采样,仍能有很高的精度。在硬件采样速率已定的前题下,这等于扩大了可分析的频谱范围。而在精度要求一定的情况下,与FFT相比,FAFT可采用采样速率低的采样电路与位数低好A/D变换器,这就可降低硬件成本。
FFT的另一缺点,即采样N点只能确定N/2个频谱系数的缺点,是这一方法算出的这一周期性重复性质造成的。FAFT无此弊病。
由even(K),odd(K)与WKN的递推性质:
even(K+mN/2)=even(K) (19)
odd(K+mN/2)=even(K) (20)
WK+mNN=WNK(21)
WK+N(m+1/2)N=-WKN(22)
可得FAFT法算出的AK的递推公式为:
由于UK,RK,ZK无周期重复性质,故FAFT法算出的AK+mN/2与AK之间不存在周期性重复关系,即利用N个采样值可算出N/2个以上的频谱系数。
FAFT方法可直接利用现有信号分析仪实现,也可另行设计更能充分利用FAFT优点的硬件来实现。与现有信号分析仪相比,采用FAFT后不仅可降低对采样速率与A/D精度的要求,还可省去数据采集电路中的抗混滤波器及有关部分,使硬件成本降低,结构简化。
为了证实FAFT的上述优点,对已知频谱系的两种常见波形-锯齿波X1(t)与余弦全波整流波形X2(t),分别用FAFT与标准FFT[10]作了频谱分析。X1(t),的波形分别见图3、4,它们在一周期内的表达式与理论频谱系数分别为:
X1(t)=(2/T)t·1=·2Σk=1∞1KπSinK2πTt=·2Σk=1∞bkSinK2πTt---(25)]]>
式中,
bK=+ 1/(kπ) (26)
X2(t)=|Cos2πTt|=2π+Σk=1∞(-1)k-12π(4K2-1)Cos2K2πTt]]>=a0+2Σk=1∞a2kCos2K2πTt---(27)]]>
式中,
a0= 2/(π) (28)
a2k=(-1)k-12π(4K2-1)(29)]]>
分析结果见表1-表4。表中f1=1/T为信号基波频率,fS=1/△为采样频率,K为谐波次数,fK=Kf1为K次谐波频率,aK,bK为分析值,aK,bK为理论值。为节省篇幅,每种比较只列出了一种波形的结果。
表1是同样的采样速率与A/D精度时两种方法分析精度对比。可看出,不仅fS相同时FAFT的精度远比FFT的精度高,即使FAFT的fSFFT的fS低时,FAFT的精度也远比FFT的精度高。
表2是同样的A/D精度,不同的采样速率时,两种方法的分析精度对比。可看出,对波形1即使FAFT的fS有FFT的fS的1/64,分析出的前31次谐波系数的精度仍比FFT的精度高。
表3是同样的分析精度时两种方法所需的采样速度与A/D精度对比。可看出,对波形2在分析出的前62次谐波系数精度基本相同的情况下,FFT需采用每周期采样256点的采样电路与18位的A/D时,FAFT只需采用每周期采样128点的采样电路与10位的A/D。
表4是不同的采样速度时,FAFT分析出的fK=50fs、120fs、250fs的K次谐波的谐波系数及精度。这不仅说明FAFT可扩大谐波分析范围,还说明此法的确不受采样定理限制。按采样定理,欲分析第3998次谐波,采样频率至少应为基频的7996倍,即fS≥7996f1;FAFT方法,fS=16f1即可以相当高的精度分析出3998次谐波及更高次数谐波的谐波系数。本例还证明与FFT相比,FAFT可大大提高分析速度。比如欲分析0~3998次谐波,FFT需处理7996个以上的采样数据,FAFT只处理(16+1)个数据即可;这时两种方法所需计算时间长短不言自明。
由于fS高则一周期内采样数据总数N大,所需的分析时间长,故FAFT方法可提高分析速度的优点,由表1-表3也可得到证明。