关键词:电力系统;快速傅立叶变换;谐波分析;窗函数;插值;多项式逼近1引言
随着各种非线性负荷特别是电力电子设备在电力系统中的广泛应用,电网谐波污染日益严重。对谐波成分的检测将有利于电能质量的评估,并可采取必要的措施加以治理。离散傅立叶变换(DFT)特别是快速傅立叶变换(FFT)算法因其易于微机实现而被作为谐波分析的主要方法,但是在应用离散傅立叶变换时存在影响测量准确性的频谱泄漏问题[1]。频谱泄漏包括长范围泄漏和短范围泄漏两部分。长范围泄漏是由于信号截断造成的信号频谱旁瓣之间的相互干扰;短范围泄漏是指由于离散频谱的栏栅效应导致的信号峰值点观测上的偏差。
已有多种方法能够降低频谱泄漏影响。比如,增加测量信号的数据长度可以降低旁瓣,提高频率分辨率;在截断数据后补零[1],也可以降低栏栅效应,减少短范围泄漏误差。但是,增加数据长度或者在截断数据后补零都将增加计算量。对于只包含整数倍次谐波的信号而言,如果能够实现同步于基波的采样,从而使截断数据长度是基波周期的整数倍,就能够使被测的基波和谐波频率恰好与傅立叶变换频域谱线的离散频点重合,而且此时信号中的基波或谐波在其它频率成分上造成的长范围泄漏也将为零。然而,要实现同步采样和整倍数截断是比较困难的。无论是Ignacio给出的采用插值补点改变信号抽样率的方法[1],还是Roberto的利用过采样器进行补点的方法[2],在实现上都是相当复杂的。但可以通过选择适当的窗函数抑制长范围泄漏,也可以根据所选择的窗函数的形式对频率、相位和幅值进行插值修正,在一定程度上弥补短范围泄漏造成的误差。文[3]~[8]给出了加窗和插值修正算法的研究成果。由于这些方法在修正幅值时只利用了靠近被测频点的一根最高谱线幅值进行插值,所以文中称这些方法为单峰谱线修正算法,针对单峰谱线修正算法在实现上的困难,本文提出了双峰谱线修正算法并结合多项式逼近获得了更为简洁的计算公式。仿真实验验证了双峰谱线修正算法的正确性和易实现性。
2算法原理
假设一个频率为f0、幅值为A、初相位为θ的单一频率信号x(t),在经过了采样率为fs的模数变换后得到如下形式的离散信号:
如果所加窗函数的时域形式为w(n),其连续频谱为w(2πf),则加窗后该信号的连续傅立叶变换为
如果忽略负频点-f0处频峰的旁瓣影响,在正频点f0附近的连续频谱函数可以表达为
对式(3)进行离散抽样,即可得到它的离散傅立叶变换的表达式为
式中离散频率间隔为△f=fs/N,N是数据截断长度。
峰值频率f0=k0.△f很难正好位于离散谱线频点上,也就是说,k0一般不是整数。设峰值点左右两侧的谱线分别为第k1和k2条谱线,这两条谱线也应该是峰值点附近幅值最大和次最大的谱线。显然,k1£k0£k2=k1 1。在离散频谱中找到这两条谱线,从而可确定k1和k2。令这两条谱线幅
对于给定的窗函数,由式(5)可以计算出唯一未知量k0,从而得到修正的峰值频率。于是,相位的修正计算公式为
式(6)、(7)中的i可以选1或2[3~6]。由于该方法仅利用幅值最大的一条谱线进行计算,即为单峰谱线修正算法。
单峰谱线修正算法能够在一定程度上补偿短范围泄漏造成的影响,从而改善分析结果。但是当选择解析形式较为复杂的窗函数时,由式(5)难以获得k0的解析解。此外,依据式(7)修正幅值时,直接利用解析表达式不仅计算复杂,还会出现小数据相除的情况。比如,当所加窗函数是矩形窗时,需要计算
当x接近0时,式(8)的分子和分母都趋近于0。对于定点微处理器而言,如果直接采用除法实现该修正算法是无法保证计算结果的精度和正确性的。文[5]采用了在内存中建立查找表,然后再利用线性插值的方法计算频率和幅值的修正系数。该方法在选取不同的窗函数以及需要满足不同的精度要求时,都必须重新计算查找表,设计过程比较繁琐。而且当精度要求提高时,查找表数据的存储量也将成倍地增加。
由于0≤k0-k1≤1,所以可以引入一个辅助参数a=k0-k1.0.5。显然,a的数值范围是[-0.5,0.5],它是以原点为对称的。这样,将式(5)经过变量代换和改写后,可以得到
令β=(y2-y1)/(y2 y1),并且当N较大时,式(9)一般可以简化为β=g(a),其反函数记为a=g-1(β)。当窗函数w(n)为实系数时,其幅频响应是偶对称的,因而函数g(.)及其反函数都是奇函数。
计算a-g-1(β)可以采用多项式逼近方法。多项式逼近是一种近似计算复杂连续函数值的数值方法。通过控制多项式逼近的次数,可以有效地控制逼近的精度。而且,随着硬件乘法器在微处理器中的广泛应用,多项式逼近的计算公式易于采用程序代码实现。当采用切比雪夫多项式逼近奇函数时,所求多项式的偶次项系数将为0,这样就进一步减少了乘法计算量。其频率修正的多项式逼近可以用下式表达
[1][2][3]下一页