本程序是利用互相關函數的計算公式來求解兩個時間序列的相位差,求出來的結果相當精確。
具體的方法可以參考《基於虛擬儀器的相位測量算法研究》,發表於《電測與儀表》,白鵬等著!
方法一、利用互相關函數的性質:對於單頻信號而言,時移相當於相移,相關係數從初始值變成最大值的時候,說明相位差也從初始相位差變為零。
在實際處理中,總是把A(t)、B(t)進行離散化採集以方便計算機的處理,設
則相關函數為:
方法二、利用互相關函數的兩同頻正弦信號的互相關函數零時刻值與其相位差的餘弦值成正比的原理獲得相位差。
離散公式為:
式中k為採樣點。通過信號x和y的自相關與互相關函數的計算,可求得它們的相位差。
比較兩種方法可知:第二種方法的計算精度較高。可見如果只是簡單的求取互相關函數,用第一種方法即可( 直接調用xcorr),但是如果要求取延遲時間,則可以按照互相關的具體公式編寫函數!
具體程序如下:
n=512;
%設定每周期數據採集點數
T=5;
%採樣周期數
fen=60;
%將度轉化為分:1度=60分
hs=360/(2*pi);
%弧度轉化為度數
t=0:2*pi/(n-1):2*T*pi;
%採樣數
N=length(t);
%採樣長度
y1=4*sin(t);
%信號1
y2=4*sin(t+pi/(180*6));
%信號2
Cc=xcorr(y1);
%求互相關函數
%用互相關函數數學表達式求相位差:
%rm(n)=Rxy(n)/sqrt(Rxx(0)*Ryy(0))
C0=sum(y1.*y2);
%y1和y2互相關
A0=sum(y1.*y1);
%y1自相關
B0=sum(y2.*y2);
%y2自相關
a=sqrt(A0);
b=sqrt(B0);
zhunquezhi=(pi/(180*6))*hs*fen
jiaocha=acos(C0/(a*b))*hs*fen
%相位差計算公式
jdwucha=jiaocha-zhunquezhi
%絕對誤差
xdwucha=((jiaocha-zhunquezhi)/zhunquezhi)*100
%相對誤差
%用有效值計算比值差
youxiaoy1=sqrt((1/(N-1))*sum(y1.^2));
%計算y1有效值
youxiaoy2=sqrt((1/(N-1))*sum(y2.^2));
%計算y2有效值
bizhicha=abs((youxiaoy1-youxiaoy2)/youxiaoy1)*100;
%計算比值差
%作圖
m=(-N+1):(N-1);
subplot(311);
plot(t,y1);
grid;
subplot(312);
plot(t,y2);
grid;
subplot(313);
plot(m,Cc);
grid;
聲明:本文由聲振論壇會員jgh530520原創,版權歸原作者所有,轉載請聯繫原作者授權,並註明:來自@聲振之家。