模拟信号求解相位差(2)

来源:互联网 发布:确保成本测算数据准确 编辑:程序博客网 时间:2024/06/08 01:50

  本文基于《正弦量频率相位测量的新方法——高金峰》所提出的方法。此方法对上篇博客中所提的方法进行了改进,计算精度有所提升,但是对于被测信号进行了限制,具体见下文分析

1.理论基础

  假设输入的两个模拟信号的表达式分别为:
  μ1(t)=U1msin(ωt+θ1)
  μ2(t)=U2msin(ωt+θ2)
  从表达式中可得:两个信号的频率为ω2π,相位差为θ=θ1θ2
  设观察时刻t=0,则以t=0为中心,以时间间隔为tμ1(t)μ2(t)进行同时采样可得采样序列:
  μ1(3t),μ1(2t),μ1(t),μ1(0),μ1(t),μ1(2t),μ1(3t),
  μ2(3t),μ2(2t),μ2(t),μ2(0),μ2(t),μ2(2t),μ2(3t),
  结合信号的表达式我们可以得到
  μ1(0)=U1msin(θ1)(1)μ1(t)=U1msin(ωt+θ1)(2)μ1(t)=U1msin(ωt+θ1)(3)μ1(2t)=U1msin(2ωt+θ1)(4)μ1(2t)=U1msin(2ωt+θ1)(5)
由和差化积公式
  sina+sinb=2sina+b2cosab2sinasinb=2cosa+b2sinab2
(2)+(3)可得
  2U1msinθ1cos(ωt)=μ1(t)+μ1(t)(6)
(2)(3)可得
  2U1mcosθ1sin(ωt)=μ1(t)μ1(t)(7)
(4)+(5)可得
  2U1msinθ1cos(2ωt)=μ1(2t)+μ1(2t)(8)
(1)(6)cos(ωt)=μ1(t)+μ1(t)2μ1(0)ω=arccos(μ1(t)+μ1(t)2μ1(0))/t(9)
  这样当μ1(0)0时,我们就可以通过三个采样点的数值计算出模拟信号的角频率ω
  当μ1(0)0μ1(t)μ1(t)0时,由(6)(7)
  tanθ1tan(ωt)=μ1(t)+μ1(t)μ1(t)μ1(t)tanθ1=μ1(t)+μ1(t)μ1(t)μ1(t)tan(ωt)(10)
  由(1)(8)cos(ωt)=μ1(2t)+μ1(2t)2μ1(0)(11)
  又由三角公式tana=1cos2a1+cos2a(取正值)可得
tanθ1=μ1(t)+μ1(t)μ1(t)μ1(t)2μ1(0)μ1(2t)μ1(2t)2μ1(0)+μ1(2t)+μ1(2t)(12)
  令t11=μ1(t)+μ1(t)μ1(t)μ1(t)t12=2μ1(0)μ1(2t)μ1(2t)2μ1(0)+μ1(2t)+μ1(2t)t21=μ2(t)+μ2(t)μ2(t)μ2(t)t22=2μ2(0)μ2(2t)μ2(2t)2μ2(0)+μ2(2t)+μ2(2t)
  所以两个模拟信号的初始相位为
  θ1=arctan(t11t12)θ2=arctan(t21t22)
  最终我们得到两个信号的相位差为θ=θ1θ2

2.流程图

Created with Raphaël 2.1.0开始 对两路信号进行A/D 获得采样序列采样序列中 两两的间隔是否过小?改变采样时间间隔两个中心点的值是否为0? 计算t11、t12、t21、t22 计算两个模拟信号的初始相位 计算角频率计算相位差 输出相位差和角频率结束 yesnoyesno

3.MATLAB仿真实现

clear all;F=1;%被采样信号频率1Hz                                                                       Ts=0.1;%采样间隔%对下列信号进行处理u1=inline('2*sin(2*pi*t)');u2=inline('3*sin(2*pi*t+pi/3)');n=-2:2;nTs=n*Ts;%采样序列f1=u1(F*nTs);f2=u2(F*nTs);if(f1(3)==0)    angle1=0;else    t11=(f1(4)+f1(2))/(f1(4)-f1(2));    t12=sqrt((2*f1(3)-f1(5)-f1(1))/(2*f1(3)+f1(5)+f1(1)));    angle1=atan(t11*t12);%信号1的相位                                                                                                  w=(f1(2)+f1(4))/(2*f1(3));endif(f2(3)==0)    angle2=0;else    t21=(f2(4)+f2(2))/(f2(4)-f2(2));    t22=sqrt((2*f2(3)-f2(5)-f2(1))/(2*f2(3)+f2(5)+f2(1)));    angle2=atan(t21*t22);%信号2的相位                                                                                                      w=(f2(2)+f2(4))/(2*f2(3));endangle=abs(angle1-angle2)%两个信号的相位差                                                   W=acos(w)/Ts;%求出角速度W                                                           F=W/(2*pi)%求出模拟信号的频率                                                                 T=1/F;%求出周期                                                                     

4.思考

4.1对于信号的要求

  从实现原理中我们可以看出,此方法对于初始相位为0的模拟信号无法进行求解,我用自己的理解已将此部分的解决方法放到代码中,但正确性还待验证。

4.2异步采样

  此方法的前提是对于两路信号采样的时间相同,即同步采样。而现实情况中实现理想情况的同步采样是较难实现的。文中给出了校验的方法。在频率ω确定的形况下,只要选定一个信号的t=0的位置,另一路信号t=0的位置就可以由第一路信号t=0的位置确定。若两路信号的采集时间相差t2,且第二路信号t=0的采集点在第一路采集点之后,则计算两路信号相位差的公式由θ=θ1θ2变为θ=θ1θ2+ωt2
  以上就是我对这篇文章的理解和实验,有不足之处还望大家多多指教。

原创粉丝点击