Matlab互相关函数xcorr(x,y,maxlags)
有一个选项maxlag
,返回滞后范围内的互相关序列[-maxlags:maxlags]
。纳比的numpy.correlate(N,M,mode)
有三种模式,但没有一种模式允许我设置特定的延迟,这与完全不同(N+M-1)
, same (max(M, N))
或有效(max(M, N) - min(M, N) + 1 )
. For len(N) = 60000
, len (M) = 200
,我想将滞后设置为100。
matplotlib.xcorr
有 maxlags 参数。它实际上是一个包装numpy.correlate
,因此没有性能节省。尽管如此,它给出的结果与 Matlab 互相关函数给出的结果完全相同。下面我编辑了 maxplotlib 中的代码,以便它仅返回相关性。原因是如果我们使用matplotlib.corr
事实上,它也会返回情节。问题是,如果我们将复杂数据类型作为参数放入其中,当 matplotlib 尝试绘制绘图时,我们将收到“将复杂数据类型转换为真实数据类型”警告。
<!-- language: python -->
import numpy as np
import matplotlib.pyplot as plt
def xcorr(x, y, maxlags=10):
Nx = len(x)
if Nx != len(y):
raise ValueError('x and y must be equal length')
c = np.correlate(x, y, mode=2)
if maxlags is None:
maxlags = Nx - 1
if maxlags >= Nx or maxlags < 1:
raise ValueError('maxlags must be None or strictly positive < %d' % Nx)
c = c[Nx - 1 - maxlags:Nx + maxlags]
return c
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)