我试图通过一些简单的例子来理解锁相值的行为,例如定义在这里。
基本上,我正在创建两个具有相同频率和幅度的信号,其中两者之间的相位偏移是随机的。现在,正如预期的那样,在大多数时间点,PLV 给了我一个低值,表明没有一致的相位开始模式。然而,在信号的开头和结尾,有一些奇怪的效果。我想这些可能是由希尔伯特变换以某种方式引入的,还是我的实现有问题?
这是我定义函数的方式:
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
def plv(x,y,trial_axis=0):
hilbert_x = signal.hilbert(x)
hilbert_y = signal.hilbert(y)
normed_x = hilbert_x/np.absolute(hilbert_x)
normed_y = hilbert_y/np.absolute(hilbert_y)
p = np.absolute(np.mean(normed_x*normed_y.conj(),axis=trial_axis))
return p
在这里,我们有一个行为图:
t = np.linspace(0,10,1000)
N = 50
s_1 = np.array([np.sin(10*2*np.pi*t) for i in range(N)])
s_2 = np.array([np.sin(10*(2*np.pi*t)+np.random.uniform(low=0,high=2*np.pi) ) for i in range(N)])
p = plv(s_1,s_2)
plt.plot(p)