Math 计算双相干的函数
各位亲爱的 我正在寻找一个numpy/scipy函数来计算三波相互作用研究之前的双相干和自双相干。 谢谢你所有可能的帮助Math 计算双相干的函数,math,numpy,matplotlib,scipy,Math,Numpy,Matplotlib,Scipy,各位亲爱的 我正在寻找一个numpy/scipy函数来计算三波相互作用研究之前的双相干和自双相干。 谢谢你所有可能的帮助 尼古拉也许这会有所帮助;一般来说,将Matlab翻译成Python非常容易。也许这会有所帮助;一般来说,将Matlab翻译成Python非常容易。在Python领域,最好的软件包是 它有几个相干性估计器,但我没有仔细研究它们。它是一个用于神经成像的软件包,但是这些算法故意只使用numpy和scipy,因此它可以被其他应用程序使用。python领域中最好的软件包是 它有几个相干
尼古拉也许这会有所帮助;一般来说,将Matlab翻译成Python非常容易。也许这会有所帮助;一般来说,将Matlab翻译成Python非常容易。在Python领域,最好的软件包是
它有几个相干性估计器,但我没有仔细研究它们。它是一个用于神经成像的软件包,但是这些算法故意只使用numpy和scipy,因此它可以被其他应用程序使用。python领域中最好的软件包是
它有几个相干性估计器,但我没有仔细研究它们。这是一个用于神经成像的软件包,但这些算法只是有意使用numpy和scipy,因此,它可以被其他应用程序使用。如果你指的是归一化互谱密度,那么你就可以做到这一点。如果你指的是归一化互谱密度,那么你就可以做到这一点。这里有一个函数依赖于scipy.spectrogram函数scipy version>0.17,并计算两个函数之间的双相差信号 来自Hagihira 2001和Hayashi 2007的定义。看 希望这有帮助 问候,
def compute_bicoherence(s1, s2, rate, nperseg=1024, noverlap=512):
""" Compute the bicoherence between two signals of the same lengths s1 and s2
using the function scipy.signal.spectrogram
"""
from scipy import signal
import numpy
# compute the stft
f1, t1, spec_s1 = signal.spectrogram(s1, fs = rate, nperseg = nperseg, noverlap = noverlap, mode = 'complex',)
f2, t2, spec_s2 = signal.spectrogram(s2, fs = rate, nperseg = nperseg, noverlap = noverlap, mode = 'complex')
# transpose (f, t) -> (t, f)
spec_s1 = numpy.transpose(spec_s1, [1, 0])
spec_s2 = numpy.transpose(spec_s2, [1, 0])
# compute the bicoherence
arg = numpy.arange(f1.size / 2)
sumarg = arg[:, None] + arg[None, :]
num = numpy.abs(
numpy.mean(spec_s1[:, arg, None] * spec_s1[:, None, arg] * numpy.conjugate(spec_s2[:, sumarg]),
axis = 0)
) ** 2
denum = numpy.mean(
numpy.abs(spec_s1[:, arg, None] * spec_s1[:, None, arg]) ** 2, axis = 0) * numpy.mean(
numpy.abs(numpy.conjugate(spec_s2[:, sumarg])) ** 2,
axis = 0)
bicoh = num / denum
return f1[arg], bicoh
# exemple of use and display
freqs, bicoh = compute_bicoherence(s1, s2, rate)
f = plt.figure(figsize = (9, 9))
plt.pcolormesh(freqs, freqs, bicoh,
# cmap = 'inferno'
)
plt.colorbar()
plt.clim(0, 0.5)
plt.show()
这是一个依赖于scipy.spectrogram函数scipy version>0.17的函数,用于计算两个信号之间的双相干 来自Hagihira 2001和Hayashi 2007的定义。看 希望这有帮助 问候,
def compute_bicoherence(s1, s2, rate, nperseg=1024, noverlap=512):
""" Compute the bicoherence between two signals of the same lengths s1 and s2
using the function scipy.signal.spectrogram
"""
from scipy import signal
import numpy
# compute the stft
f1, t1, spec_s1 = signal.spectrogram(s1, fs = rate, nperseg = nperseg, noverlap = noverlap, mode = 'complex',)
f2, t2, spec_s2 = signal.spectrogram(s2, fs = rate, nperseg = nperseg, noverlap = noverlap, mode = 'complex')
# transpose (f, t) -> (t, f)
spec_s1 = numpy.transpose(spec_s1, [1, 0])
spec_s2 = numpy.transpose(spec_s2, [1, 0])
# compute the bicoherence
arg = numpy.arange(f1.size / 2)
sumarg = arg[:, None] + arg[None, :]
num = numpy.abs(
numpy.mean(spec_s1[:, arg, None] * spec_s1[:, None, arg] * numpy.conjugate(spec_s2[:, sumarg]),
axis = 0)
) ** 2
denum = numpy.mean(
numpy.abs(spec_s1[:, arg, None] * spec_s1[:, None, arg]) ** 2, axis = 0) * numpy.mean(
numpy.abs(numpy.conjugate(spec_s2[:, sumarg])) ** 2,
axis = 0)
bicoh = num / denum
return f1[arg], bicoh
# exemple of use and display
freqs, bicoh = compute_bicoherence(s1, s2, rate)
f = plt.figure(figsize = (9, 9))
plt.pcolormesh(freqs, freqs, bicoh,
# cmap = 'inferno'
)
plt.colorbar()
plt.clim(0, 0.5)
plt.show()