关于Matlab:相同频率的两个正弦波之间的相位差

Phase Difference Between Two Sine Waves With Same Frequency

我有两个代表两个不同信号的向量,每个向量都是具有相同频率的正弦波。我尝试了互相关,傅立叶变换,希尔伯特变换等,但是没有任何东西会在特定频率(应为负)上返回正确的理论值(以弧度为单位)。 Matlab中有什么方法可以计算出两个具有相同频率的正弦波的相位差?

注意:我可以访问两个信号的频率和幅度,并且可以在需要时发布一些代码。


假设s1s2是等频率正弦波,您可以像acos( dot(a,b) / (norm(a)*norm(b)) )一样轻松地评估它们之间的相位差(弧度的绝对值)。

1
2
3
4
5
6
x = 0:.001:100;
omega = 2*pi*100;
phi = pi/6;
s1 = sin(omega*x);
s2 = sin(omega*x - phi);
phase_diff = acos( dot(s1,s2) / (norm(s1)*norm(s2)) );