基于LabVIEW 的正弦信号频率与相位测量1. 前言信号频率与相位的测量具有重要的实际意义。
本文调研了频率与相位的多种测量算法,并借助LabVIEW 编程实现。
在此基础上,对各种算法进行了比较研究,且提出了行之有效的改进措施。
2. 采样定理与误差分析2.1 采样定理时域信号()f t 的频谱若只占据有限频率区间m m ωω(-,),则信号可以用等间隔的采样值唯一表示,而最低采样频率为m 2f 。
采样定理表明:信号最大变化速度决定了信号所包含的最高频率分量,要使采样信号能够不失真地反映原信号,必须满足在最高频率分量的一个周期内至少采样两个点。
2.2 误差分析对连续周期信号()a x t 进行采样得离散序列()d x n ,如果满足采样定理,则离散序列()d x n 的傅里叶级数()dg X k 是连续信号()a x t 的傅里叶级数1()ag X k ω的周期延拓,否则会出现两种形式的误差。
2.2.1 泄漏误差在连续信号()a x t 一个周期1T 内采样1N 个点,如果正好满足11s N T T =(s T 为采样间隔),则是完整周期采样,采样结果()d x n 仍为周期序列,周期为1N 。
基于()d x n 一个周期1N 个点计算离散傅里叶级数()dg X k ,由()dg X k 可以准确得到连续信号()a x t 的傅里叶级数1()ag X k ω。
如果在连续信号()a x t 的M 个周期时间内采样整数1N 个点,即11s N T MT =,也是完整周期采样。
在此情况下,采样结果()d x n 仍为周期序列,周期为1N ,但()d x n 的一个周期对应于()a x t 的M 个周期,由离散序列()d x n 仍然可以准确得到连续信号()a x t 的频谱。
如果以上两种情况都不满足,则为不完整周期抽样,()d x n 也不再是周期序列。
如果取()d x n 近似周期的1N 个点计算傅立叶级数,则产生误差,此误差称为泄漏误差。
图1 所示是对连续正弦信号进行非完整周期抽样的两种情况,分别是11s N T T <和11s N T T >。
图1 正弦信号非完整周期采样序列的周期延拓2.2.2 混叠误差如果信号频率无限,则无论如何提高采样频率,都不能避免频谱混叠;如果频率有限,但采样不满足采样定理,也会出现频谱混叠,采样信号的离散傅里叶级数不再能准确表示原来连续信号的傅里叶级数。
混叠误差的本质在于,如果对信号中高频分量的采样不满足采样定理,其采样结果将表现为一低频序列,它和信号中原有低频分量的采样结果混在一起,造成低频分量频谱的误差。
在信号频率无限的情况下,混叠不可避免,但通过提高采样频率可以减小误差;在频率有限的情况下,只要满足采样定理,混叠误差可以完全避免。
3. 频率与相位测量算法3.1 频率测量算法3.1.1 三点法三点法是一种建立在三角函数变换基础上的数据拟合方法。
假设被测函数是正弦函数,在等间隔采样的前提下可以利用相邻3个数据样本,导出求解信号频率的线性方程,进而拟合求解频率[1]。
设信号为()sin()m u t U t ωϕ=+,若t ωϕα+=,则()sin m u t U α= (1)若设2ssfF F ωθ==,其中s F 为采样频率,则有 2s F f θ= (2)相邻的3个数据样本可表示为sin i m i u U α=1sin()i m i u U αθ+=+ (3)2sin(2)i m i u U αθ+=+由三角变换有212cos i i i u u u θ+++= (4) 所以21cos 2i i i u u u θ+++=(5)令12()2,()i i i x n u y n u u ++==+,则得到()()cos y n x n θ=arccos 2sF f θ=(6) 式**就是所需要的线性方程。
用最小二乘法拟合可以得到一个较准确的斜率cos θ,进而求出频率。
3.1.2 多周期平均计数法多周期平均计数方法是通过对多个周期的采样信号进行计数,然后以其平均值作为频率测量值。
假定采样频率为s F ,共采集m 个周期的信号,用计数的方法找到各个周期的样本数,分别为1N ,2N ,···,m N ,那么对应于各个周期的频率值分别为1s F N ,2s F N ,···,s mFN ,考虑m 个周期的频率的均值,有12111s m F f m N N N ⎛⎫=+++⎪⎝⎭(7) 实际上,在非整周期采样的条件下,式(3-1)中N 的取值只有两种情况,即多一个或少一个样本。
假定分别是1n 和11n +,与它们对应的周期数分别是1m 和2m ,则式(3-1)可以改写为121122111()1s F m m f m f m f m n n m⎛⎫=+=+ ⎪+⎝⎭(8) 其中11s F f n =和211sF f n =+分别对应于被测信号频率的最大偏差值和最小偏差值。
3.1.3 能量矩平衡法图2是能量矩平衡法[2]的示意图,用i p 表示第i 个谱线的幅值,i x 是i p 的横坐标,借助力学概念,设想第i 个谱线对原点形成了一个转矩(不妨称之为能量矩),其大小为i i p x ,对全部N 个谱线,总的能量矩为1Ni i i p x =∑,设想在x 轴上存在一个重心在0x 处,反方向施加给全部信号的能量0p ,在不考虑频率泄漏的情况下,令x 轴上的能量矩平衡,即001Ni i i p x p x ==∑ (9)由于0p 可表示为01N ii p p ==∑,所以有011N Nii ii i x p p x ===∑∑,从而得到11Ni ii Nii p xxp===∑∑。
最后将横坐标乘以sF f N∆=,得到所求频率: 11Ni ii sNii p xF f Np===∑∑ (10) 式中,s F 为采样率,N 为样本数。
3.1.4 比例法图3表示采样信号的频谱,其中显示的是主瓣内的谱线k y 和1k y +,其谱线序号分别为kx 图2 能量矩平衡法示意图和1k x +,而频率的准确值位于横坐标0x 处。
可以利用k y 和1k y +这两条谱线的幅值对间隔1k k x x +-,即f ∆进行细分。
在矩形窗的情况下,可以直观的视0x 处为重心,则有1010k k k ky x xy x x ++-=- (11) 于是1100110001k k k k k k k k k ky y x x x x x x y x x x x x x +++++-+--===--- (12)所以101k k k k y x x y y ++=++101k k k k y f f x x f y y ++⎛⎫=∆⋅=+⋅∆ ⎪+⎝⎭(13) 用Hanning 窗,可以导出1012k kk k k y y x x y y ++-=++112k k k k k y y f x f y y ++⎛⎫-=+⋅∆⎪+⎝⎭(14)3.2 相位测量算法3.2.1 过零法过零法的基本原理如图4所示。
判断两信号过零点时刻1t 与2t 的时间间隔t ∆,将时间差转化为相位差,计算公式为22t n phase T Tππτ∆== (15) 其中,t ∆为两信号过零点时刻1t 与2t 的时间间隔,T 为信号周期,τ为信号采样周期,n 为两信号过零点时刻1t 与2t 间的采样点数。
图3 比例法的示意图图4 过零法的原理图设A/D 转换器的位数为N ,最大模拟输入量为Dm U ,则幅值的采样分辨率为1/2N Dm U -,如图5所示。
在过零点附近,电压u 满足11112222Dm DmN N U U u ---≤≤+(16) 故采样点N P 的数值大于零,采样点1N P +的数值小于零,在N P 与1N P +之间必然有一个真实的过零点0P ,一般取为01()/2N N P P P +=+。
具体算法过程如下:(1)获取两路数字信号值数组;(2)寻找数组中正、负值变换点,即10N N P P +<; (3)根据正、负值点计算过零点,同时计算周期; (4)根据两过零点计算时间差,并转换为相位; (5)结果与误差显示。
3.2.2 相关分析法相关法利用两个同频正弦信号的互相关函数零时刻值与其相位差的余弦值成正比的原理获得相位差[3]。
由于噪声信号与有效信号的相关性很小,因而该方法有很好的抑制噪声能力。
假设两个同频信号表达式如下:00()sin()()x x t A N t ωϕ=++00()sin()()y y t B N t ωϕ=++ (17)其中,A 、B 分别为()x t 和()y t 的幅值,()x N t 、()y N t 分别为噪声信号。
对()x t 和()y t 进行相关运算,有00010011()()()[sin()()][sin(())()]T Txy x y R x t y t dt A t N t B t N t dt T T ττωϕωτϕτ=+=++++++⎰⎰ (18)当0τ=时000101(0)[sin()()][sin(())()]Txy x y R A t N t B t N t dt T ωϕωϕ=++++⎰(19) 由于噪声和信号、噪声和噪声不相关,积分后可得10(0)cos()2xy ABR ϕϕ=-102(0)cos()xy R arc ABϕϕ-= (20)其中,A =B =实际处理的信号为采样后的离散点序列,相应的离散计算公式为图5 过零点的取值11(0)()()k xy n R x n y n k -==∑121(0)()k x n R x n k -==∑ (21)1201(0)()k y n R y n k -==∑式中k 为采样点。
通过信号()x t 和()y t 的自相关与互相关函数的计算,可求得它们的相位差。
3.2.3 互功率谱法该方法首先对两路正弦信号进行采样得到两组离散数据,然后利用互相关原理求出两组数据互相关函数的幅度谱和相位谱。
因为两信号为同频信号,它们具有最大的相关性。
故在幅度谱中存在最大幅度值,在相位谱中与幅度谱最大值对应的相位信息即为两信号的相位差[4]。
互功率谱的计算是通过先求两待测信号的互相关函数再进行离散傅里叶变换来实现的。
设()x t 、()y t 分别为两待测同频正弦信号,ϕ为()x t 和()y t 的相位差,T 为采样时间,τ为互相关函数的变量,则互相关函数计算公式为1()lim()()Txy T R x t y t dt T ττ→∞=+⎰ (22)采样获得的离散时间序列信号的互相关函数表达式为11()()()Nxy k R i x k y k i N==+∑ (23)当两路信号为时不变信号时,它们的互功率谱密度同互相关函数是Z 变换关系,即 ()()k xy xyk S Z Rk Z ∞-=-∞=∑ (24)对求得的互功率谱密度函数进行极坐标变换,即可得到两正弦信号的幅度谱与相位谱,进而求出相位差[5]。