2017-04-06 372 views
0

我有两个表示两个不同信号的矢量,每个信号都是具有相同频率的正弦波。我尝试过互相关,傅里叶变换,希尔伯特变换等,但没有以特定频率返回正确的理论值(弧度)(应该是负值)。 Matlab中是否有任何方法计算两个相同频率的正弦波的相位差?具有相同频率的两个正弦波之间的相位差

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

+0

所有这些方法都是合理的,取决于上下文/实现。你尝试了什么,你得到了什么结果,你期望得到什么结果? –

+0

@OliverCharlesworth我尝试过使用'xcorr'(互相关),'fft'函数和'hilbert'函数尝试计算相位差,但是这些值与理论值不匹配相同的频率。我预计值比我收到的要少(更负面)。在低频时,“希尔伯特”变换最为接近,但由于某些原因,它在较高频率(300 + Hz)处发射。 –

+0

你可以发布一些最小的可运行示例,包括示例数据,因为'xcorr'和'fft'应该可以工作。 (我不熟悉'hilbert') – m7913d

回答

0

假设s1s2是你isofrequential正弦波可以为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))); 
相关问题