我有两个矢量代表两个不同的信号,每个信号都是一个频率相同的正弦波。我尝试过互相关,傅立叶变换,希尔伯特变换等,但没有任何东西在特定频率下返回正确的理论值(以弧度表示)(应为负数)。 Matlab中是否有任何方法可以计算出两个频率相同的正弦波的相位差?
注意:我可以访问两个信号的频率和幅度,如果需要,我可以发布一些代码。
答案 0 :(得分:1)
假设s1
和s2
是您的等序正弦波,您可以像acos( dot(a,b) / (norm(a)*norm(b)) )
一样轻松地评估它们之间的相位差(弧度中的绝对值)。
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)) );